home *** CD-ROM | disk | FTP | other *** search
/ Games of Daze / Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso / x2ftp / msdos / docs / inter45a / interrup.b < prev    next >
Encoding:
Text File  |  1995-03-26  |  347.3 KB  |  9,633 lines

  1. Interrupt List, part 2 of 12
  2. This compilation is Copyright (c) 1989,1990,1991,1992,1993,1994,1995 Ralf Brown
  3. --------c-1340-------------------------------
  4. INT 13 U - QUICKCACHE II v4.20 - SET "sticky_max"
  5.     AH = 40h
  6.     AL = new value for "sticky_max"
  7. Return: AX = status (0000h successful)
  8. SeeAlso: AH=41h"QUICKCACHE"
  9. --------d-1341--BX55AA-----------------------
  10. INT 13 - IBM/MS INT 13 Extensions - INSTALLATION CHECK
  11.     AH = 41h
  12.     BX = 55AAh
  13.     DL = drive (80h-FFh)
  14. Return:    CF set on error (not supported)
  15.         AH = 01h (invalid function)
  16.     CF clear if successful
  17.         BX = AA55h if installed
  18.         AH = major version of extensions (01h = 1.x, 20h = 2.0)
  19.         AL = internal use
  20.         CX = API subset support bitmap (see #0177)
  21.         DH = extension version (v2.0+ ??? -- not present in 1.x)
  22. Note:    the Phoenix Enhanced Disk Drive Specification v1.0 uses version 2.0 of
  23.       the INT 13 Extensions API
  24. SeeAlso: AH=42h"INT 13 Ext",AH=48h"INT 13 Ext"
  25.  
  26. Bitfields for IBM/MS INT 13 Extensions API support bitmap:
  27. Bit(s)    Description    (Table 0177)
  28.  0    extended disk access functions (AH=42h-44h,47h,48h) supported
  29.  1    removable drive controller functions (AH=45h,46h,48h,49h,INT 15/AH=52h)
  30.       supported
  31.  2    extended drive parameter table is valid (see #0179,#0182)
  32.  3-15    reserved (0)
  33. --------c-1341-------------------------------
  34. INT 13 U - QUICKCACHE II v4.20 - SAVE/RESTORE ???
  35.     AH = 41h
  36.     AL = direction
  37.         01h save to file
  38.         else restore from file
  39.     ES:DI -> 1024-byte buffer for ???
  40. Return: AX = status (0000h successful, 8000h failed)
  41. Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and
  42.       Associates, Inc.
  43. SeeAlso: AH=40h"QUICKCACHE"
  44. --------d-1342-------------------------------
  45. INT 13 - IBM/MS INT 13 Extensions - EXTENDED READ
  46.     AH = 42h
  47.     DL = drive number
  48.     DS:SI -> disk address packet (see #0178)
  49. Return: CF clear if successful
  50.         AH = 00h
  51.     CF set on error
  52.         AH = error code (see #0140)
  53.         disk address packet's block count field set to number of blocks
  54.           successfully transferred
  55. SeeAlso: AH=41h"INT 13 Ext",AH=43h"INT 13 Ext"
  56.  
  57. Format of disk address packet:
  58. Offset    Size    Description    (Table 0178)
  59.  00h    BYTE    10h (size of packet)
  60.  01h    BYTE    reserved (0)
  61.  02h    WORD    number of blocks to transfer
  62.  04h    DWORD    -> transfer buffer
  63.  08h    QWORD    starting absolute block number
  64. --------N-134257DX1234-----------------------
  65. INT 13 U - Beame&Whiteside BWLPD - INSTALLATION CHECK
  66.     AX = 4257h ("BW")
  67.     DX = 1234h
  68. Return: BX = 414Ch if installed
  69. Program: BWLPD is the printer daemon from the BW-NFS package
  70. SeeAlso: INT 62/AH=00h"ETHDEV"
  71. --------d-1343-------------------------------
  72. INT 13 - IBM/MS INT 13 Extensions - EXTENDED WRITE
  73.     AH = 43h
  74.     AL = write flags
  75.        bit 0: verify write
  76.        bits 7-1 reserved (0)
  77.     DL = drive number
  78.     DS:SI -> disk address packet (see #0178)
  79. Return: CF clear if successful
  80.         AH = 00h
  81.     CF set on error
  82.         AH = error code (see #0140)
  83.         disk address packet's block count field set to number of blocks
  84.           successfully transferred
  85. Note:    the BIOS returns CF set/AH=01h (invalid function) if verify is
  86.       requested but not supported
  87. SeeAlso: AH=41h"INT 13 Ext",AH=42h"INT 13 Ext",AH=44h
  88. --------d-1344-------------------------------
  89. INT 13 - IBM/MS INT 13 Extensions - VERIFY SECTORS
  90.     AH = 44h
  91.     DL = drive number
  92.     DS:SI -> disk address packet (see #0178)
  93. Return: CF clear if successful
  94.         AH = 00h
  95.     CF set on error
  96.         AH = error code (see #0140)
  97.         disk address packet's block count field set to number of blocks
  98.           successfully verified
  99. SeeAlso: AH=41h"INT 13 Ext",AH=42h"INT 13 Ext",AH=47h
  100. --------d-1345-------------------------------
  101. INT 13 - IBM/MS INT 13 Extensions - LOCK/UNLOCK DRIVE
  102.     AH = 45h
  103.     AL = operation
  104.         00h lock media in drive
  105.         01h unlock media
  106.         02h check lock status
  107.     DL = drive number
  108. Return: CF clear if successful
  109.         AH = 00h
  110.         AL = lock state (00h = unlocked)
  111.     CF set on error
  112.         AH = error code (see #0140)
  113. Notes:    this function is required to be supported for any removable drives
  114.       numbered 80h or higher
  115.     up to 255 locks may be placed on a drive, and the media will not
  116.       be physically unlocked until all locks have been removed
  117. SeeAlso: AH=41h"INT 13 Ext",AH=46h,AH=49h,INT 15/AH=52h"Phoenix"
  118. ----------1346-------------------------------
  119. INT 13 - IBM/MS INT 13 Extensions - EJECT MEDIA
  120.     AH = 46h
  121.     AL = 00h (reserved)
  122.     DL = drive number
  123. Return: CF clear if successful
  124.         AH = 00h
  125.     CF set on error
  126.         AH = error code (see #0140)
  127. SeeAlso: AH=49h,INT 15/AH=52h"Phoenix"
  128. ----------1347-------------------------------
  129. INT 13 - IBM/MS INT 13 Extensions - EXTENDED SEEK
  130.     AH = 47h
  131.     DL = drive number
  132.     DS:SI -> disk address packet (see #0178)
  133. Return: CF clear if successful
  134.         AH = 00h
  135.     CF set on error
  136.         AH = error code (see #0140)
  137. SeeAlso: AH=0Ch,AH=42h"INT 13 Ext"
  138. --------d-1348-------------------------------
  139. INT 13 - IBM/MS INT 13 Extensions - GET DRIVE PARAMETERS
  140.     AH = 48h
  141.     DL = drive (80h-FFh)
  142.     DS:SI -> buffer for drive parameters (see #0179)
  143. Return: CF clear if successful
  144.         DS:SI buffer filled
  145.     CF set on error
  146.         AH = error code (see #0140)
  147. SeeAlso: AH=08h,AH=41h,AH=49h
  148.  
  149. Format of IBM/MS INT 13 Extensions drive parameters:
  150. Offset    Size    Description    (Table 0179)
  151.  00h    WORD    (call) size of buffer (001Ah for v1.x, 001Eh for v2.0)
  152.         (ret) size of returned data
  153.  02h    WORD    information flags (see #0180)
  154.  04h    DWORD    number of cylinders on drive
  155.  08h    DWORD    number of heads on drive
  156.  0Ch    DWORD    number of sectors per track
  157.  10h    QWORD    total number of sectors on drive
  158.  18h    WORD    bytes per sector
  159. ---v2.0---
  160.  1Ah    DWORD    -> configuration parameters (see #0182)
  161.         FFFFh:FFFFh if not available
  162. SeeAlso: #0181,#1855
  163.  
  164. Bitfields for IBM/MS INT 13 Extensions information flags:
  165. Bit(s)    Description    (Table 0180)
  166.  0    DMA boundary errors handled transparently
  167.  1    cylinder/head/sectors-per-track information is valid
  168.  2    removable drive
  169.  3    write with verify supported
  170.  4    drive has change-line support (required if drive >= 80h is removable)
  171.  5    drive can be locked (required if drive >= 80h is removable)
  172.  6    CHS information set to maximum supported values, not current media
  173.  
  174. Format of Phoenix Enhanced Disk Drive Spec translated drive parameter table:
  175. Offset    Size    Description    (Table 0181)
  176.  00h    WORD    number of cylinders
  177.  02h    BYTE    number of heads
  178.  03h    BYTE    A0h (signature indicating translated table)
  179.  04h    BYTE    number of physical sectors per track
  180.  05h    WORD    starting write precompensation cylinder number
  181.  07h    BYTE    reserved
  182.  08h    BYTE    control byte (see #1857 at INT 41)
  183.  09h    WORD    number of physical cylinders
  184.  0Bh    BYTE    number of physical heads
  185.  0Ch    WORD    cylinder number of landing zone
  186.  0Eh    BYTE    number of logical sectors per track
  187.  0Fh    BYTE    checksum
  188. Program: the Phoenix Enhanced Disk Drive Specification is an addition to the
  189.       IBM/MS INT 13 extensions
  190. SeeAlso: #0182,#1855
  191.  
  192. Format of Phoenix Enhanced Disk Drive Spec fixed disk param table extension:
  193. Offset    Size    Description    (Table 0182)
  194.  00h    WORD    physical I/O port base address
  195.  02h    WORD    disk-drive control port address
  196.  04h    BYTE    drive flags (see #0183)
  197.  05h    BYTE    proprietary information
  198.         bits 7-4 reserved (0)
  199.         bits 3-0: Phoenix proprietary (used by BIOS)
  200.  06h    BYTE    IRQ (bits 3-0; bits 7-4 reserved and must be 0)
  201.  07h    BYTE    sector count for multi-sector transfers
  202.  08h    BYTE    DMA control
  203.         bits 7-4: DMA type
  204.         bits 3-0: DMA channel
  205.  09h    BYTE    programmed I/O control
  206.         bits 7-4: reserved (0)
  207.         bits 3-0: PIO type (1,2, or 3)
  208.  0Ah    WORD    drive options (see #0184)
  209.  0Ch  2 BYTEs    reserved (0)
  210.  0Eh    BYTE    extension revision level (high nybble=major, low nybble=minor)
  211.         (currently 10h)
  212.  0Fh    BYTE    2's complement checksum of bytes 00h-0Eh
  213. SeeAlso: #0181
  214.  
  215. Bitfields for Phoenix Enhanced Disk Drive Spec drive flags:
  216. Bit(s)    Description    (Table 0183)
  217.  7    reserved (1)
  218.  6    LBA enabled
  219.  5    reserved (1)
  220.  4    drive is slave
  221.  3-0    reserved (0)
  222. SeeAlso: #0182,#0184
  223.  
  224. Bitfields for Phoenix Enhanced Disk Drive Spec drive options:
  225. Bit(s)    Description    (Table 0184)
  226.  0    fast PIO enabled
  227.  1    fast DMA access enabled
  228.  2    block PIO (multi-sector transfers) enabled
  229.  3    CHS translation enabled
  230.  4    LBA translation enabled
  231.  5    removable media
  232.  6    CD-ROM
  233.  7    32-bit transfer mode
  234.  15-8    reserved
  235. SeeAlso: #0182,#0183
  236. --------d-1349-------------------------------
  237. INT 13 - IBM/MS INT 13 Extensions - EXTENDED MEDIA CHANGE
  238.     AH = 49h
  239.     DL = drive number
  240. Return: CF clear if media has not changed
  241.         AH = 00h
  242.     CF set if media may have changed
  243.         AH = 06h (see #0140)
  244. Note:    unlike AH=16h, any drive number may be specified
  245. SeeAlso: AH=16h,AH=41h"INT 13 Ext",AH=46h
  246. --------v-135342CX0001-----------------------
  247. INT 13 - ScanBoot - INSTALLATION CHECK
  248.     AX = 5342h ("SB")
  249.     CX = 0001h
  250.     DX = 0000h
  251. Return: CF clear if ScanBoot installed
  252.        AX = 0000h
  253.        CX = serial number ("SW" if shareware release)
  254.        DX = version
  255.        BX,SI,ES destroyed
  256. Program: ScanBoot is a virus-detection TSR by PanSoft
  257. --------d-135501-----------------------------
  258. INT 13 - Seagate ST01/ST02 - Inquiry
  259.     AX = 5501h
  260.     DH = number of bytes to transfer
  261.     DL = drive ID (80h, 81h, ...)
  262.     ES:BX -> buffer for results
  263. Return:    ES:BX buffer filled with the Inquiry results
  264. Notes:    the ST01/ST02 BIOS does not return any success/failure indication,
  265.       so all commands must be assumed to have been successful
  266.     the ST01/ST02 BIOS always maps its drives after the previous BIOS
  267.       drives without changing the BIOS drive count at 0040h:0075h
  268.     this command is identical to the SCSI Inquiry command
  269. --------d-135502-----------------------------
  270. INT 13 - Seagate ST01/ST02 - RESERVED
  271.     AX = 5502h
  272. --------d-135503-----------------------------
  273. INT 13 - Seagate ST01/ST01 - Set Device Type Qualifier (DTQ)
  274.     AX = 5503h
  275.     DH = DTQ byte (see #0185)
  276.     DL = drive ID (80h, 81h, ...)
  277. Return:    nothing
  278.  
  279. Bitfields for DTQ byte:
  280. Bit(s)    Description    (Table 0185)
  281.  7    reserved
  282.  6    SCSI drive attached
  283.  5    reserved
  284.  4    selected drive is ST225N/NP (Paired)
  285.  3    selected drive is ST225N
  286.  2    Host Adapter checks parity on the selected drive 
  287.  1    selected drive has been installed
  288.  0    Seagate installation software present
  289. --------d-135504-----------------------------
  290. INT 13 U - Seagate - ??? - RETURN IDENTIFICATION
  291.     AX = 5504h
  292.     DX = drive (bit 7 set for hard disk)
  293. Return: CF clear if successful
  294.         AX = 4321h if ST01/ST02h
  295.         AX = 4322h if ??? Seagate controller
  296.     CF set on error
  297. SeeAlso: AX=5505h,AX=5514h
  298. --------d-135504-----------------------------
  299. INT 13 - Seagate ST01/ST02 - RETURN IDENTIFICATION
  300.     AX = 5504h
  301.     DL = drive ID (80h, 81h, ...)
  302. Return:    AX = 4321h
  303.     BL = selected drive number (00h, 01h)
  304.     BH = number of drives attached to Host Adapter (max. 2)
  305. --------d-135505-----------------------------
  306. INT 13 - Seagate - ??? - PARK HEADS
  307.     AX = 5505h
  308.     DX = drive (bit 7 set for hard disk)
  309. Return: CF clear if successful
  310.     CF set on error
  311. SeeAlso: AX=5504h,AX=5515h
  312. --------d-135505-----------------------------
  313. INT 13 - Seagate ST01/ST02 - PARK HEADS
  314.     AX = 5505h
  315.     DL = drive ID (80h, 81h, ...)
  316.     DH = subfunction
  317.         00h park heads (SCSI Stop command)
  318.         01h un-park heads (SCSI Start command)      
  319. Return:    nothing
  320. --------d-135506-----------------------------
  321. INT 13 - Seagate ST01/ST02 - SCSI Bus Parity
  322.     AX = 5506h
  323.     DL = drive ID (80h, 81h, ...)
  324.     DH = subfunction
  325.         00h disable parity check
  326.         01h enable parity check
  327.         02h return current parity setting
  328. Return:    AL = status
  329.         00h parity checking disabled
  330.         01h parity checking enabled
  331. --------d-135507-----------------------------
  332. INT 13 - Seagate ST01/ST02 - RESERVED FUNCTIONS
  333.     AX = 5507h to 550Dh
  334. Note:    officially listed as "reserved"
  335. --------d-135514-----------------------------
  336. INT 13 U - Seagate - ???
  337.     AX = 5514h
  338.     DX = drive (bit 7 set for hard disk)
  339. Return: CF clear if successful
  340.     CF set on error
  341.     AX = return value (FEBEh,FEBFh,FEDAh,FEDBh)
  342. SeeAlso: AX=5504h,AX=5515h
  343. --------d-135515-----------------------------
  344. INT 13 U - Seagate - PARK HEADS???
  345.     AX = 5515h
  346.     DX = drive (bit 7 set for hard disk)
  347. Return: CF clear if successful
  348.     CF set on error
  349. Note:    appears to be identical to AX=5505h
  350. SeeAlso: AX=5504h,AX=5505h
  351. --------d-1359-------------------------------
  352. INT 13 - SyQuest - Generic SCSI pass through
  353.     AH = 59h
  354.     CX = HOST_ID, 0-based
  355.     DX = 80h
  356.     ES:BX pointer to SCSI structure (see #0186)
  357. Return: CF clear
  358.     AH = 95h
  359. SeeAlso: AH=12h"SyQuest",AH=13h"SyQuest",AH=1Fh"SyQuest"
  360.  
  361. Format of SyQuest SCSI structure:
  362. Offset    Size    Description    (Table 0186)
  363.  00h    WORD    opcode (see #0187)
  364.  02h    BYTE    target's SCSI ID
  365.  03h    BYTE    target's logical unit number
  366.  04h    BYTE    data direction (00h no data xfer, 01h data in, FFh data out)
  367.  05h    BYTE    host status
  368.         00h successful
  369.         01h selection time out
  370.         02h data over-run or under-run
  371.  06h    BYTE    target status at command completion
  372.         00h successful
  373.         02h check status
  374.         08h busy
  375.  07h    BYTE    command data block length
  376.  08h    DWORD    request data length
  377.  0Ch    DWORD    result data length (actual length of data transferred)
  378.  10h    DWORD    -> CDB
  379.  14h    DWORD    -> data buffer
  380. Note:    The handler does not perform a 'Request Sense' command if there was an error
  381.  
  382. (Table 0187)
  383. Values for SCSI opcode:
  384.  00h    verify interface
  385.     clears carry flag and returns if function is available
  386.  01h    returns the ID of the INT 13h Handler in a NULL terminated string of 
  387.     length less than 40 byte including the terminator.
  388.     The string is stored in the buffer pointed by p_buf.
  389.  02h    device mapping info. The caller provides a one byte buffer.
  390.     The handler stores the Int 13h Device ID (80h or above) in the buffer.
  391.     It stores 0 if that target does not exists.
  392.  03h    execute SCSI command
  393.  04h    device reset
  394.  05h    SCSI bus reset
  395. --------d-1370-------------------------------
  396. INT 13 - Priam EDVR.SYS DISK PARTITIONING SOFTWARE???
  397.     AH = 70h
  398.     ???
  399. Return: ???
  400. Note:    Priam's EDISK.EXE (FDISK replacement) and EFMT.EXE (low-level
  401.       formatting program) make this call, presumably to EDVR.SYS (the
  402.       partitioning driver)
  403. SeeAlso: AH=ADh
  404. ----------1375-------------------------------
  405. INT 13 - ???
  406.     AH = 75h
  407.     ???
  408. Return: AH = ???
  409.     ???
  410. Note:    intercepted by PC-Cache (v5.1 only)
  411. ----------1376-------------------------------
  412. INT 13 - ???
  413.     AH = 76h
  414.     ???
  415. Return: AH = ???
  416.     ???
  417. Note:    intercepted by PC-Cache (v5.1 only)
  418. --------c-137B00-----------------------------
  419. INT 13 - NOW! v3.05 - GET INFORMATION
  420.     AX = 7B00h
  421.     CX:DX -> 1F8h-byte buffer for information record (see #0188)
  422. Return: AX = 0000h
  423.     BX = segment of main resident code
  424.     ES = ???
  425. Program: NOW! is a disk cache by Vertisoft Systems, Inc.
  426. SeeAlso: AX=7B02h,AH=EFh
  427.  
  428. Format of NOW! information record:
  429. Offset    Size    Description    (Table 0188)
  430.  00h 80 BYTEs    name of directory from which NOW! was started
  431.  50h 424 BYTEs    ???
  432.  81h  ? BYTEs    array of bytes for ???
  433.  F7h 250 BYTEs    array of 25 entries, one per drive???
  434.     Offset    Size    Description
  435.      00h  2 BYTEs    ???
  436.      02h    WORD    ???
  437.      04h    WORD    ???
  438.      06h  4 BYTEs    ???
  439. 1F1h  7 BYTEs    ???
  440. --------c-137B01-----------------------------
  441. INT 13 - NOW! v3.05 - ???
  442.     AX = 7B01h
  443. Return: DX = segment of ???
  444. SeeAlso: AX=7B00h
  445. --------c-137B02-----------------------------
  446. INT 13 - NOW! v3.05 - SET INFORMATION
  447.     AX = 7B02h
  448.     BX = segment of ??? (10h above a PSP)
  449.     CX:DX -> 1F8h-byte information record (see #0188)
  450. Return: ???
  451. Program: NOW! is a disk cache by Vertisoft Systems, Inc.
  452. Note:    NOW! grabs the INT 24h value from the PSP reached via the segment in
  453.       BX
  454. SeeAlso: AX=7B00h
  455. --------c-137B03-----------------------------
  456. INT 13 - NOW! v3.05 - ???
  457.     AX = 7B03h
  458.     ???
  459. Return: ???
  460. SeeAlso: AX=7B00h,AX=7B04h
  461. --------c-137B04-----------------------------
  462. INT 13 - NOW! v3.05 - ???
  463.     AX = 7B04h
  464.     ???
  465. Return: ???
  466. SeeAlso: AX=7B03h
  467. --------c-137B05-----------------------------
  468. INT 13 - NOW! v3.05 - GET DISK ACCESSES???
  469.     AX = 7B05h
  470. Return: BX:AX = number of physical accesses???
  471.     DX:CX = total disk accesses???
  472. SeeAlso: AX=7B00h,AX=7B06h
  473. --------c-137B06-----------------------------
  474. INT 13 - NOW! v3.05 - GET ???
  475.     AX = 7B06h
  476.     BX = ???
  477. Return: AX = 0000h
  478.     BX = ???
  479. SeeAlso: AX=7B05h,AX=7B07h
  480. --------c-137B07-----------------------------
  481. INT 13 - NOW! v3.05 - GET ???
  482.     AX = 7B07h
  483. Return: AX = ???
  484.     BX = ???
  485.     CX = ???
  486.     DX = ???
  487. SeeAlso: AX=7B06h
  488. --------c-137B08-----------------------------
  489. INT 13 - NOW! v3.05 - ???
  490.     AX = 7B08h
  491.     CX = ??? (default 00h)
  492. Return: ???
  493. SeeAlso: AX=7B00h
  494. --------c-1380--CX6572-----------------------
  495. INT 13 - FAST! v4.02+ - API
  496.     AH = 80h
  497.     CX = 6572h
  498.     DX = 1970h
  499.     ES:BX -> request packet (see #0190)
  500.     AL = function number (see #0189)
  501. Return: AH = status (except function 06h)
  502.         00h if successful
  503.         01h invalid function
  504.         05h not supported by the installed variant
  505.     CF clear if successful
  506.     CF set on error
  507.     AL may be destroyed
  508. Program: FAST! is a disk cache by Future Computing Systems and marketed by BLOC
  509.       Publishing Corp.
  510. SeeAlso: AX=8001h,AX=8006h,AX=8007h
  511. Index:    hotkeys;FAST!
  512.  
  513. (Table 0189)
  514. Values for FAST! function:
  515.  01h    get cache information (see separate entry)
  516.  04h    disable cache
  517.  05h    enable cache and reset statistics
  518.  06h    installation check (see separate entry)
  519.  07h    unhook interrupts (see separate entry)
  520.  09h    flush cache
  521.  0Ah    (v4.02+) enable staged writes
  522.  0Bh    (v4.02+) disable staged writes
  523.  0Ch    (v4.02+) enable beep on flush
  524.  0Dh    (v4.02+) disable beep on flush
  525.  0Eh    ???
  526.  0Fh    ???
  527.  10h    (v4.12+) enable hotkeys
  528.  11h    (v4.12+) disable hotkeys
  529.  12h    (v4.13+) set idle delay
  530.  13h    (v4.13+) set flush dirty percentage
  531.  14h    (v5.00+) enable mouse checks
  532.  15h    (v5.00+) disable mouse checks
  533.  16h    (v5.00d+) reduce cache size to minimum
  534.  17h    (v5.00d+) increase cache size to maximum
  535.  
  536. Format of FAST! request packet:
  537. Offset    Size    Description    (Table 0190)
  538.  00h    DWORD    pointer to 19-byte signature string (see #0191)
  539.  04h    DWORD    pointer to buffer for data (if needed by function)
  540.  
  541. (Table 0191)
  542. Values for FAST! v4.04-v5.03 signature string:
  543.  13h 07h 06h 08h 11h 18h 0Fh 0Eh 02h 18h 13h 08h 0Bh 08h 01h 00h 04h 08h 15h
  544. --------c-138001CX6572-----------------------
  545. INT 13 - FAST! v4.02+ - GET CACHE INFORMATION
  546.     AX = 8001h
  547.     CX = 6572h
  548.     DX = 1970h
  549.     ES:BX -> request packet (see #0192)
  550. Return: AH = 00h if successful
  551. SeeAlso: AH=80h,AX=8006h
  552.  
  553. Format of FAST! request packet:
  554. Offset    Size    Description    (Table 0192)
  555.  00h    DWORD    -> 19-byte signature string (see #0191)
  556.  04h    DWORD    -> buffer for cache information (see #0193)
  557.  
  558. Format of FAST! cache information (v5.00-5.03):
  559. Offset    Size    Description    (Table 0193)
  560.  00h    WORD    binary version number of FAST! (v5.00 = 01F4h)
  561.  02h    BYTE    revision letter (61h = X.XXa, 62h = X.XXb, etc.)
  562.  03h    BYTE    FAST! variant
  563.         (01h = FASTE, 02h = FASTX BIOS, 04h = FASTC, 20h = FASTX XMS)
  564.  04h    DWORD    total number of read requests
  565.  08h    DWORD    number of physical disk reads
  566.  0Ch    DWORD    grabbed hash buckets
  567.  10h    DWORD    "st_386mem"
  568.  14h    DWORD    total number of writes (only counted when staging enabled)
  569.  18h    DWORD    number of physical disk writes (only when staging enabled)
  570.  1Ch    DWORD    number of write errors while flushing cache
  571.  20h    WORD    flags1 (see #0194)
  572.  22h    WORD    flags
  573.         bit 0: ???
  574.         bit 1: staged writes enabled
  575.  24h    WORD    ???
  576.  26h    WORD    maximum cache size in KB
  577.  28h    WORD    minimum cache size in KB
  578.  2Ah    WORD    segment of first cache buffer (FASTC)
  579.         segment of EMS page frame (FASTE)
  580.         XMS handle (FASTX XMS)
  581.  2Ch    WORD    number of hash buckets containing no entries
  582.  2Eh    WORD    number of hash buckets containing one entry
  583.  30h    WORD    number of hash buckets containing two entries
  584.  32h    WORD    number of hash buckets containing three entries
  585.  34h    WORD    number of hash buckets containing four entries
  586.  36h    WORD    number of hash buckets containing five entries
  587.  38h    WORD    maximum contiguous sectors
  588.  3Ah    WORD    hash factor
  589.  3Ch    WORD    number of paragraphs of memory used below 1M
  590.  3Eh    WORD    entries per hash bucket
  591.  40h    WORD    idle delay in seconds
  592.  42h  2 BYTEs    ???
  593.  44h    WORD    staged write threshold percentage
  594.  46h  2 BYTEs    ???
  595.  48h    WORD    number of dirty sectors
  596.  4Ah    WORD    number of staged write buffers
  597.  4Ch    WORD    current cache size in KB
  598.  4Eh    WORD    beep frequency in Hz
  599.  50h    WORD    ???
  600.  52h    WORD    ???
  601.  
  602. Bitfields for FAST! flags1:
  603. Bit(s)    Description    (Table 0194)
  604.  0    beep on flush
  605.  3    hotkeys enabled
  606.  4    mouse idle check enabled
  607.  8    caching enabled
  608.  13    ???
  609. --------c-138006CX6572-----------------------
  610. INT 13 - FAST! v4.02+ - INSTALLATION CHECK
  611.     AX = 8006h
  612.     CX = 6572h
  613.     DX = 1970h
  614.     ES:BX -> request packet (see #0195)
  615. Return: AX = 1965h if installed
  616. SeeAlso: AH=80h,AX=8001h,AX=8007h
  617.  
  618. Format of FAST! request packet:
  619. Offset    Size    Description    (Table 0195)
  620.  00h    DWORD    -> 19-byte signature string (see #0191)
  621. --------c-138007CX6572-----------------------
  622. INT 13 - FAST! v4.02+ - UNHOOK INTERRUPTS
  623.     AX = 8007h
  624.     CX = 6572h
  625.     DX = 1970h
  626.     ES:BX -> request packet (see #0196)
  627. Return: AX = 1965h if installed
  628. SeeAlso: AH=80h,AX=8006h
  629. Index:    uninstall;FAST!
  630.  
  631. Format of FAST! request packet:
  632. Offset    Size    Description    (Table 0196)
  633.  00h    DWORD    -> 19-byte signature string (see #0191)
  634. --------c-1381--SI4358-----------------------
  635. INT 13 - Super PC-Kwik v3.20+ - ???
  636.     AH = 81h
  637.     SI = 4358h
  638.     ???
  639. Return: ???
  640. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  641.       Super PC-Kwik, and thus support this call (PC-Cache v5.1 corresponds
  642.       to PC-Kwik v3.20 and PC-Cache v5.5 to PC-Kwik v3.27)
  643.     returns immediately in PC-Cache v5.x
  644. Index:    PC-Cache|Qualitas Qcache
  645. --------c-1382--SI4358-----------------------
  646. INT 13 - Super PC-Kwik v3.20+ - ???
  647.     AH = 82h
  648.     SI = 4358h
  649.     ???
  650. Return: AL = ???
  651. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  652.       Super PC-Kwik, and thus support this call
  653. SeeAlso: AH=84h
  654. Index:    PC-Cache|Qualitas Qcache
  655. --------c-1383--SI4358-----------------------
  656. INT 13 - Super PC-Kwik v3.20+ - ???
  657.     AH = 83h
  658.     SI = 4358h
  659.     AL = ???
  660.     ES:BX -> ???
  661.     ???
  662. Return: ???
  663. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  664.       Super PC-Kwik, and thus support this call
  665. SeeAlso: AH=85h
  666. Index:    PC-Cache|Qualitas Qcache
  667. --------c-1384--SI4358-----------------------
  668. INT 13 - Super PC-Kwik v3.20+ - ???
  669.     AH = 84h
  670.     SI = 4358h
  671.     AL = ???
  672.     ???
  673. Return: AL = ???
  674. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  675.       Super PC-Kwik, and thus support this call
  676. SeeAlso: AH=82h
  677. Index:    PC-Cache|Qualitas Qcache
  678. --------c-1385--SI4358-----------------------
  679. INT 13 - Super PC-Kwik v3.20+ - ???
  680.     AH = 85h
  681.     SI = 4358h
  682.     AL = ???
  683.     DL = ???
  684.     ???
  685. Return: ???
  686. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  687.       Super PC-Kwik, and thus support this call (PC-Cache v5.1 corresponds
  688.       to PC-Kwik v3.20)
  689. SeeAlso: AH=83h
  690. Index:    PC-Cache|Qualitas Qcache
  691. --------c-1386--SI4358-----------------------
  692. INT 13 - Super PC-Kwik v4.00+ - ???
  693.     AH = 86h
  694.     SI = 4358h
  695.     ???
  696. Return: ???
  697. Note:    Qualitas Qcache v4.00 is an OEM version of Super PC-Kwik v4.00, and
  698.       thus supports this call
  699. Index:    Qualitas Qcache
  700. --------c-1387--SI4358-----------------------
  701. INT 13 - Super PC-Kwik v4.00+ - ???
  702.     AH = 87h
  703.     SI = 4358h
  704.     ???
  705. Return: AH = status??? (00h)
  706.     CX = ???
  707.     DX = ??? (0000h)
  708. Note:    Qualitas Qcache v4.00 is an OEM version of Super PC-Kwik v4.00, and
  709.       thus supports this call
  710. Index:    Qualitas Qcache
  711. --------c-1388--SI4358-----------------------
  712. INT 13 - Super PC-Kwik v4.00+ - ???
  713.     AH = 88h
  714.     SI = 4358h
  715.     ???
  716. Return: AH = status??? (00h)
  717.     CX = ???
  718.     DX = ??? (0000h)
  719. Note:    Qualitas Qcache v4.00 is an OEM version of Super PC-Kwik v4.00, and
  720.       thus supports this call
  721. Index:    Qualitas Qcache
  722. --------c-1389--SI4358-----------------------
  723. INT 13 - Super PC-Kwik v5.10+ - ???
  724.     AH = 89h
  725.     SI = 4358h
  726.     ???
  727. Return: ???
  728. --------c-138A--SI4358-----------------------
  729. INT 13 - Super PC-Kwik v5.10+ - ???
  730.     AH = 8Ah
  731.     SI = 4358h
  732.     ???
  733. Return: ???
  734. --------c-138EED-----------------------------
  735. INT 13 - HyperDisk v4.01+ - ???
  736.     AX = 8EEDh
  737.     ???
  738. Return: ???
  739. Program: HyperDisk is a shareware disk cache by HyperWare (Roger Cross)
  740. SeeAlso: AX=8EEEh,AX=8EEFh,AH=EEh,INT 2F/AH=DFh
  741. --------c-138EEE-----------------------------
  742. INT 13 - HyperDisk v4.01+ - ???
  743.     AX = 8EEEh
  744. Return: CF set
  745.     AX = CS of HyperDisk resident code
  746.     ???
  747. Note:    identical to AX=8EEFh in HYPERDKX v4.21-4.30
  748. SeeAlso: AX=8EEDh,AX=8EEFh,AH=EEh
  749. --------c-138EEF-----------------------------
  750. INT 13 - HyperDisk v4.01+ - ???
  751.     AX = 8EEFh
  752. Return: CF set
  753.     AX = CS of HyperDisk resident code
  754.     ???
  755. Note:    identical to AX=8EEEh in HYPERDKX v4.21-4.30
  756. SeeAlso: AX=8EEDh,AX=8EEEh,AH=EEh
  757. --------c-1392--SI4358-----------------------
  758. INT 13 - Super PC-Kwik v5.10+ - ???
  759.     AH = 92h
  760.     SI = 4358h
  761.     ???
  762. Return: AH = status??? (00h)
  763.     DL = ???
  764. SeeAlso: AH=93h
  765. --------c-1393--SI4358-----------------------
  766. INT 13 - Super PC-Kwik v5.10+ - ???
  767.     AH = 93h
  768.     SI = 4358h
  769.     ???
  770. Return: AH = status??? (00h)
  771.     AL = ???
  772. SeeAlso: AH=92h
  773. --------c-1394--SI4358-----------------------
  774. INT 13 - Super PC-Kwik v5.10+ - ???
  775.     AH = 94h
  776.     SI = 4358h
  777.     ???
  778. Return: ???
  779. --------c-1395--SI4358-----------------------
  780. INT 13 - Super PC-Kwik v5.10+ - ???
  781.     AH = 95h
  782.     SI = 4358h
  783.     ???
  784. Return: AH = status??? (00h)
  785.     DX = ???
  786. --------c-1396--SI4358-----------------------
  787. INT 13 - Super PC-Kwik v5.10+ - ???
  788.     AH = 96h
  789.     SI = 4358h
  790.     AL = ??? (01h)
  791.     BX = ??? (0790h)
  792.     DL = ???
  793. Return: AH = status??? (00h)
  794.     DX = ???
  795. --------c-1397--SI4358-----------------------
  796. INT 13 - Super PC-Kwik v5.10+ - ???
  797.     AH = 97h
  798.     SI = 4358h
  799.     ???
  800. Return: ???
  801. --------c-1398--SI4358-----------------------
  802. INT 13 - Super PC-Kwik v5.10+ - ???
  803.     AH = 98h
  804.     SI = 4358h
  805.     ???
  806. Return: ???
  807. --------c-1399--SI4358-----------------------
  808. INT 13 - Super PC-Kwik v5.10+ - ???
  809.     AH = 99h
  810.     SI = 4358h
  811.     ???
  812. Return: ???
  813. --------c-139A--SI4358-----------------------
  814. INT 13 - Super PC-Kwik v5.10+ - ???
  815.     AH = 9Ah
  816.     SI = 4358h
  817.     ???
  818. Return: ???
  819. --------c-139B--SI4358-----------------------
  820. INT 13 - Super PC-Kwik v5.10+ - ???
  821.     AH = 9Bh
  822.     SI = 4358h
  823.     ???
  824. Return: ???
  825. --------c-139C--SI4358-----------------------
  826. INT 13 - Super PC-Kwik v5.10+ - ???
  827.     AH = 9Ch
  828.     SI = 4358h
  829.     ???
  830. Return: ???
  831. Note:    functions 9Ch and 9Dh are the only ones which are fully reentrant; all
  832.       other PC-Kwik API calls (INT 13/81h-B0h) return AX=0200h and CF clear
  833.       if a previous call is still in progress
  834. --------c-139D--SI4358-----------------------
  835. INT 13 - Super PC-Kwik v5.10+ - ???
  836.     AH = 9Dh
  837.     SI = 4358h
  838.     ???
  839. Return: ???
  840. --------c-13A0--SI4358-----------------------
  841. INT 13 - Super PC-Kwik v3.20+ - GET RESIDENT CODE SEGMENT
  842.     AH = A0h
  843.     SI = 4358h
  844. Return: AX = segment of resident code
  845. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  846.       Super PC-Kwik, and thus support this call (note that PC-Cache v5.5
  847.       corresponds to PC-Kwik v3.27)
  848. SeeAlso: INT 16/AX=FFA5h/CX=1111h
  849. Index:    PC-Cache|Qualitas Qcache
  850. --------c-13A1--SI4358-----------------------
  851. INT 13 - Super PC-Kwik v3.20+ - FLUSH CACHE
  852.     AH = A1h
  853.     SI = 4358h
  854. Return: CF clear
  855.     AH = 00h (v5.10)
  856. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  857.       Super PC-Kwik, and thus support this call (note that PC-Cache v5.1
  858.       corresponds to PC-Kwik v3.20)
  859. SeeAlso: INT 16/AX=FFA5h/CX=FFFFh
  860. Index:    PC-Cache|Qualitas Qcache
  861. --------c-13A2--SI4358-----------------------
  862. INT 13 - Super PC-Kwik v3.20+ - ???
  863.     AH = A2h
  864.     SI = 4358h
  865.     ???
  866. Return: ???
  867. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  868.       Super PC-Kwik, and thus support this call (note that PC-Cache v5.1
  869.       corresponds to PC-Kwik v3.20)
  870. Index:    PC-Cache|Qualitas Qcache
  871. --------c-13A3--SI4358-----------------------
  872. INT 13 U - Super PC-Kwik v5.10+ - DISABLE CACHE
  873.     AH = A3h
  874.     SI = 4358h
  875. Return: CF clear
  876. SeeAlso: AH=A4h
  877. --------c-13A4--SI4358-----------------------
  878. INT 13 U - Super PC-Kwik v5.10+ - ENABLE CACHE
  879.     AH = A4h
  880.     SI = 4358h
  881. Return: CF clear
  882. SeeAlso: AH=A3h
  883. --------c-13A5--SI4358-----------------------
  884. INT 13 CU - Super PC-Kwik v5.10+ - PROGRAM TERMINATION NOTIFICATION
  885.     AH = A5h
  886.     SI = 4358h
  887. Return: AX = ???
  888.     SI = ???
  889. Notes:    called and used internally by Super PC-Kwik when a program terminates
  890.       via INT 21/AH=00h, INT 21/AH=31h, or INT 21/AH=4Ch
  891.     this call is not supported by Qualitas Qcache 4.00
  892. Index:    PC-Cache
  893. SeeAlso: AH=A6h,AH=A9h,INT 21/AH=00h,INT 21/AH=31h,INT 21/AH=4Ch
  894. --------c-13A6--SI4358-----------------------
  895. INT 13 CU - Super PC-Kwik v5.10+ - PROGRAM LOAD NOTIFICATION
  896.     AH = A6h
  897.     SI = 4358h
  898.     DS:DX -> ASCIZ program name
  899.     ES:BX -> EXEC data block (see #0803 at INT 21/AH=4Bh)
  900. Return: ???
  901. Note:    called and used internally by Super PC-Kwik when a program is loaded
  902.       with INT 21/AX=4B00h
  903. SeeAlso: AH=A5h,AH=A9h,INT 21/AH=4Bh
  904. --------c-13A7--SI4358-----------------------
  905. INT 13 CU - Super PC-Kwik 5.1 - ???
  906.     AH = A7h
  907.     SI = 4358h
  908. Return: ???
  909. Note:    called and used internally by Super PC-Kwik on some INT 21 calls
  910. SeeAlso: AH=A5h,AH=A6h,AH=A8h
  911. --------v-13A759-----------------------------
  912. INT 13 U - Novell DOS 7 - SDRes v27.03 - ???
  913.     AX = A759h
  914. Return: AX = 59A7h if installed
  915.         DX:BX -> ??? data
  916. Program: SDRes is the resident portion of the Search&Destroy antiviral by
  917.       Fifth Generation Systems, as bundled with Novell DOS 7
  918. SeeAlso: INT 21/AH=0Eh/DL=ADh
  919. --------c-13A8--SI4358-----------------------
  920. INT 13 CU - Super PC-Kwik 5.1 - ???
  921.     AH = A8h
  922.     SI = 4358h
  923. Return: ???
  924. Note:    called and used internally by Super PC-Kwik on some INT 21 calls
  925. SeeAlso: AH=A5h,AH=A6h,AH=A7h
  926. --------c-13A9--SI4358-----------------------
  927. INT 13 CU - Super PC-Kwik 5.1 - EXITCODE RETRIEVAL NOTIFICATION
  928.     AH = A9h
  929.     SI = 4358h
  930. Return: ???
  931. Note:    called and used internally by Super PC-Kwik when an application issues
  932.       INT 21/AH=4Dh
  933. SeeAlso: AH=A5h,AH=A6h,INT 21/AH=4Dh
  934. --------c-13AA--SI4358-----------------------
  935. INT 13 - Super PC-Kwik v4+ - ???
  936.     AH = AAh
  937.     SI = 4358h
  938.     ???
  939. Return: ???
  940. Note:    Qualitas Qcache is an OEM version of Super PC-Kwik, and thus supports
  941.       this call
  942. --------c-13AB--SI4358-----------------------
  943. INT 13 - Super PC-Kwik v4+ - ???
  944.     AH = ABh
  945.     SI = 4358h
  946.     ???
  947. Return: ???
  948. Note:    Qualitas Qcache is an OEM version of Super PC-Kwik, and thus supports
  949.       this call
  950. --------c-13AC--SI4358-----------------------
  951. INT 13 - Super PC-Kwik v4+ - ???
  952.     AH = ACh
  953.     SI = 4358h
  954.     ???
  955. Return: ???
  956. Note:    Qualitas Qcache is an OEM version of Super PC-Kwik, and thus supports
  957.       this call
  958. --------d-13AD-------------------------------
  959. INT 13 - Priam HARD DISK CONTROLLER???
  960.     AH = ADh
  961.     ???
  962. Return: ???
  963. Note:    this call is made from Priam's EFMT.EXE (low-level formatter), probably
  964.       to check the ROM type on the controller for their hard disk kits
  965. SeeAlso: AH=70h
  966. --------c-13AD--SI4358-----------------------
  967. INT 13 - Super PC-Kwik v4+ - ???
  968.     AH = ADh
  969.     SI = 4358h
  970.     ???
  971. Return: ???
  972. Note:    Qualitas Qcache is an OEM version of Super PC-Kwik, and thus supports
  973.       this call
  974. --------c-13AE--SI4358-----------------------
  975. INT 13 - Super PC-Kwik v5.10+ - ???
  976.     AH = AEh
  977.     SI = 4358h
  978.     ???
  979. Return: ???
  980. --------c-13B0--SI4358-----------------------
  981. INT 13 - Super PC-Kwik v3.20+ - ???
  982.     AH = B0h
  983.     SI = 4358h
  984.     ???
  985. Return: ???
  986. Note:    PC Tools PC-Cache 5.x is an OEM version of Super PC-Kwik, and thus
  987.       supports this call; Qualitas Qcache does not support it
  988. Index:    PC-Cache
  989. --------v-13EC00-----------------------------
  990. INT 13 - VIRUS - "Tiso" - INSTALLATION CHECK
  991.     AX = EC00h
  992. Return: CF clear if installed
  993. SeeAlso: AH=F2h,INT 12/AX=4350h/BX=4920h
  994. --------d-13EE-------------------------------
  995. INT 13 - SWBIOS - SET 1024-CYLINDER FLAG
  996.     AH = EEh
  997.     DL = drive number (80h, 81h)
  998. Return: CF clear
  999.        AH = 00h
  1000. Program: SWBIOS is a TSR by Ontrack Computer Systems
  1001. Desc:    the following INT 13 call will add 1024 to the specified cylinder
  1002.       number to get the actual cylinder number desired
  1003. Notes:    the flag is cleared by all INT 13 calls except AH=EEh and AH=EFh
  1004.     Disk Manager also supports these calls
  1005.     this function is also supported by HyperDisk v4.01+ and PC-Cache v5.5+,
  1006.       in order to allow caching of drives using SWBIOS to access more than
  1007.       1024 cylinders
  1008.     for software which supports that call, this function is equivalent to
  1009.       calling AH=EFh with CX=0400h
  1010. SeeAlso: AH=F9h,AH=FEh,INT 16/AX=FFA5h/CX=1111h,INT 2F/AH=DFh
  1011. Index:    PC-Cache;huge disks|Disk Manager
  1012. --------c-13EF-------------------------------
  1013. INT 13 - Ontrack Drive Rocket - SET CYLINDER OFFSET
  1014.     AH = EFh
  1015.     CX = cylinder offset for next INT 13 call
  1016.     DL = drive number (80h, 81h)
  1017. Return: CF clear
  1018.         AH = 00h
  1019. Program: Drive Rocket is a drive accelerator by Ontrack Computer Systems for
  1020.       IDE drives supporting the read multiple and write multiple commands
  1021. Desc:    the following INT 13 call will add the number given by this call to
  1022.       the specified cylinder to get the actual cylinder number, then reset
  1023.       the offset to zero
  1024. Note:    this function is also supported by the NOW! disk cache, and presumably
  1025.       newer versions of SWBIOS and Disk Manager
  1026.     for software which supports this call, AH=EEh is equivalent to calling
  1027.       this function with CX=0400h
  1028.     the cylinder offset is reset to 0 by all INT 13 called except AH=EEh
  1029.       and AH=EFh
  1030. SeeAlso: AX=7B00h
  1031. --------V-13F2-------------------------------
  1032. INT 13 - VIRUS - "Neuroquila" - INSTALLATION CHECK
  1033.     AH = F2h
  1034. Return: CF ??? if installed
  1035. SeeAlso: AX=EC00h,INT 12/AX=4350h/BX=4920h,INT 21/AX=0B56h
  1036. --------d-13F9-------------------------------
  1037. INT 13 - SWBIOS - INSTALLATION CHECK
  1038.     AH = F9h
  1039.     DL = drive number (80h,81h)
  1040. Return: CF clear
  1041.         DX = configuration word
  1042.         bit 15 set if other SWBIOS extensions available
  1043.     CF set on error
  1044. Program: SWBIOS is a TSR by Ontrack Computer Systems
  1045. Note:    Disk Manager also supports these calls
  1046. SeeAlso: AH=EEh
  1047. Index:    Disk Manager
  1048. --------v-13FA--DX5945-----------------------
  1049. INT 13 - PC Tools v8+ VSAFE, VWATCH - API
  1050.     AH = FAh
  1051.     DX = 5945h
  1052.     AL = function (00h-07h)
  1053. Return: varies by function
  1054.     if not installed:
  1055.         CF set
  1056.         AH = 01h
  1057. Note:    this API is identical to the ones on INT 16/AH=FAh and INT 21/AH=FAh,
  1058.       so it is listed in its entirety under INT 16/AX=FA00h and following
  1059. SeeAlso: INT 16/AX=FA00h
  1060. --------d-13FE-------------------------------
  1061. INT 13 - SWBIOS - GET EXTENDED CYLINDER COUNT
  1062.     AH = FEh
  1063.     DL = drive number (80h, 81h)
  1064. Return: CF clear
  1065.     DX = number of cylinders beyond 1024 on drive
  1066. Program: SWBIOS is a TSR by Ontrack Computer Systems
  1067. Notes:    standard INT 13/AH=08h will return a cylinder count truncated to 1024
  1068.     BIOS without this extension would return count modulo 1024
  1069.     Disk Manager also supports these calls
  1070. SeeAlso: AH=EEh
  1071. --------U-13FFFFBHAA-------------------------
  1072. INT 13 - UNIQUE UX Turbo Utility - SET TURBO MODE
  1073.     AX = FFFFh
  1074.     BH = AAh
  1075.     BL = subfunction
  1076.         00h installation check
  1077.         Return: AX = 1234h if installed
  1078.         01h turn on Turbo mode
  1079.         02h turn off Turbo mode
  1080.         03h set Turbo mode according to hardware switch
  1081.         04h set disk access to Turbo mode
  1082.         05h set disk access to Normal mode
  1083. SeeAlso: INT 15/AH=DFh
  1084. Index:    installation check;UNIQUE UX Turbo Utility
  1085. --------S-14---------------------------------
  1086. INT 14 - SERIAL - Digiboard DigiCHANNEL PC/X* Extender INT 14 (XAPCM232.SYS)
  1087. Note:    the installation check for this driver is to determine whether the
  1088.       "~DOSXAM~" character device exists
  1089. Index:    installation check;Digiboard DigiCHANNEL
  1090. --------S-1400-------------------------------
  1091. INT 14 - SERIAL - INITIALIZE PORT
  1092.     AH = 00h
  1093.     AL = port parameters (see #0197)
  1094.     DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
  1095. Return: AH = line status (see #0201)
  1096.         FFh if error on Digiboard XAPCM232.SYS
  1097.     AL = modem status (see #0202)
  1098. Notes:    default handler is at F000h:E739h in IBM PC and 100% compatible BIOSes
  1099.     since the PCjr supports a maximum of 4800 bps, attempting to set 9600
  1100.       bps will result in 4800 bps
  1101.     various network and serial-port drivers support the standard BIOS
  1102.       functions with interrupt-driven I/O instead of the BIOS's polled I/O
  1103.     the 04/08/93 Compaq system ROM uses only the low two bits of DX
  1104. SeeAlso: AH=04h"SERIAL",AH=04h"MultiDOS",AH=05h"SERIAL",AH=57h
  1105. SeeAlso: AX=8000h"ARTICOM",AH=81h"COMM-DRV",AH=82h"COURIERS",AH=8Ch
  1106.  
  1107. Bitfields for serial port parameters:
  1108. Bit(s)    Description    (Table 0197)
  1109.  7-5    data rate (110,150,300,600,1200,2400,4800,9600 bps)
  1110.  4-3    parity (00 or 10 = none, 01 = odd, 11 = even)
  1111.  2    stop bits (set = 2, clear = 1)
  1112.  1-0    data bits (00 = 5, 01 = 6, 10 = 7, 11 = 8)
  1113. SeeAlso: #0199,#0204,#0205,#0206
  1114. --------S-1400-------------------------------
  1115. INT 14 - FOSSIL (Fido/Opus/Seadog Standard Interface Level) - INITIALIZE
  1116.     AH = 00h
  1117.     AL = initializing parameters
  1118.         7 - 6 - 5       4 - 3     2      1 - 0
  1119.         -BAUD RATE-       PARITY   STOP   WORD
  1120.                     BITS  LENGTH
  1121.         000 19200 bd   00 none  0: 1  00: 5
  1122.         001 38400 bd   01 odd   1: 2  01: 6
  1123.         010      300 bd   11 even      10: 7
  1124.         011      600 bd          11: 8
  1125.         100     1200 bd
  1126.         101     2400 bd
  1127.         110     4800 bd
  1128.         111     9600 bd (4800 on PCjr)
  1129.     DX = port number (0-3 or FFh if only performing non-I/O setup)
  1130. Return: AH = RS-232 status code bits (see #0198)
  1131.     AL = modem status bits
  1132.         bit 3: always 1
  1133.         bit 7: DCD - carrier detect
  1134. SeeAlso: #0197,AH=05h"FOSSIL",AH=81h"COMM-DRV",AH=82h"COURIERS"
  1135.  
  1136. Bitfields for FOSSIL RS-232 status:
  1137. Bit(s)    Description    (Table 0198)
  1138.  0    RDA - input data is available in buffer
  1139.  1    OVRN - data has been lost
  1140.  5    THRE - room is available in output buffer
  1141.  6    TSRE - output buffer empty
  1142. --------S-1400-------------------------------
  1143. INT 14 - MBBIOS - INITIALIZE PORT
  1144.     AH = 00h
  1145.     AL = port parameters (see #0199)
  1146.     DX = port number
  1147. Return: AH = line status (see #0201)
  1148.     AL = modem status (see #0202)
  1149. Note:    MBBIOS was written by H. Roy Engehausen
  1150. SeeAlso: AH=04h"MBBIOS",AH=05h"MBBIOS",AH=09h"MBBIOS"
  1151.  
  1152. Bitfields for MBBIOS port parameters:
  1153. Bit(s)    Description    (Table 0199)
  1154.  7-5    data rate
  1155.     (normally 110,150,300,600,1200,2400,4800,9600 bps;
  1156.     9600,14400,19200,28800,38400,57600,115200,330400 bps
  1157.     if the high-speed option is set)
  1158.  4-3    parity (00 or 10 = none, 01 = odd, 11 = even)
  1159.  2    stop bits (set = 2, clear = 1)
  1160.  1-0    data bits (00 = 5, 01 = 6, 10 = 7, 11 = 8)
  1161. SeeAlso: #0197
  1162. --------N-1400--DXFFFF-----------------------
  1163. INT 14 - Connection Manager - MODIFY DEFAULT CONNECTION PARAMETERS
  1164.     AH = 00h
  1165.     DX = FFFFh
  1166.     ES:DI -> vector string specifying new parameters
  1167. Return: AH = return code (00h,03h) (see #0200)
  1168. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  1169.       serial ports over an IPX or NetBIOS-based network
  1170. Note:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  1171.       function, but redirects the port over the network; if DX is any other
  1172.       value, the call is chained
  1173. SeeAlso: AH=04h/DX=FFFFh,AH=08h/DX=FFFFh,AH=0Ah/DX=FFFFh
  1174.  
  1175. (Table 0200)
  1176. Values for Connection Manager return code:
  1177.  00h    successful
  1178.  01h    no such connection
  1179.  02h    invalid connection ID
  1180.  03h    invalid subvector found
  1181.  04h    communication error (check BH)
  1182.  06h    insufficient resources, retry later
  1183.  FFh    no data available
  1184. --------S-1401-------------------------------
  1185. INT 14 - SERIAL - WRITE CHARACTER TO PORT
  1186.     AH = 01h
  1187.     AL = character to write
  1188.     DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
  1189. Return: AH bit 7 clear if successful
  1190.     AH bit 7 set on error
  1191.     AH bits 6-0 = port status (see #0201)
  1192. Notes:    various network and serial-port drivers support the standard BIOS
  1193.       functions with interrupt-driven I/O instead of the BIOS's polled I/O
  1194.     the 04/08/93 Compaq system ROM uses only the low two bits of DX
  1195. SeeAlso: AH=02h,AH=0Bh"FOSSIL",AX=8000h"ARTICOM",AH=89h
  1196. --------N-1401--DXFFFF-----------------------
  1197. INT 14 - Connection Manager - SEND CHARACTER
  1198.     AH = 01h
  1199.     DX = FFFFh
  1200.     BH = character to send
  1201. Return: AH = return code (00h-02h,06h) (see #0200)
  1202. Notes:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  1203.       function, but redirects the port over the network; if DX is any other
  1204.       value, the call is chained
  1205.     this function is provided primarily for compatibility; AH=06h/DX=FFFFh
  1206.       is the preferred function because it provides better performance
  1207. SeeAlso: AH=02h/DX=FFFFh,AH=06h/DX=FFFFh,AH=09h/DX=FFFFh
  1208. --------S-1402-------------------------------
  1209. INT 14 - SERIAL - READ CHARACTER FROM PORT
  1210.     AH = 02h
  1211.     AL = 00h (ArtiCom)
  1212.     DX = port number (00h-03h (04h-43h for Digiboard XAPCM232.SYS))
  1213. Return: AH = line status (see #0201)
  1214.     AL = received character if AH bit 7 clear
  1215. Notes:    will timeout if DSR is not asserted, even if function 03h returns
  1216.       data ready
  1217.     various network and serial-port drivers support the standard BIOS
  1218.       functions with interrupt-driven I/O instead of the BIOS's polled I/O
  1219.     the 04/08/93 Compaq system ROM uses only the low two bits of DX
  1220. SeeAlso: AH=01h,AH=02h"FOSSIL",AH=84h,AH=FCh
  1221. --------S-1402-------------------------------
  1222. INT 14 - FOSSIL - RECEIVE CHARACTER WITH WAIT
  1223.     AH = 02h
  1224.     DX = port number (0-3)
  1225. Return: AL = character received
  1226.     AH = 00h
  1227. SeeAlso: AH=01h,AH=02h"SERIAL"
  1228. --------N-1402--DXFFFF-----------------------
  1229. INT 14 - Connection Manager - RECEIVE CHARACTER
  1230.     AH = 02h
  1231.     DX = FFFFh
  1232.     BH = character to send
  1233. Return: AH = return code (00h-02h,04h,FFh) (see #0200)
  1234.     BH = line status (see #0201)
  1235.     AL = received character (if any)
  1236. Notes:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  1237.       function, but redirects the port over the network; if DX is any other
  1238.       value, the call is chained
  1239.     this function is provided primarily for compatibility; AH=07h/DX=FFFFh
  1240.       is the preferred function because it provides better performance
  1241. SeeAlso: AH=02h/DX=FFFFh,AH=03h/DX=FFFFh,AH=06h/DX=FFFFh
  1242. --------S-1403-------------------------------
  1243. INT 14 - SERIAL - GET PORT STATUS
  1244.     AH = 03h
  1245.     AL = 00h (ArtiCom)
  1246.     DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
  1247. Return: AH = line status (see #0201)
  1248.     AL = modem status (see #0202)
  1249.     AX = 9E00h if disconnected (ArtiCom)
  1250. Note:    the 04/08/93 Compaq system ROM uses only the low two bits of DX
  1251. SeeAlso: AH=00h,AH=07h"MultiDOS",AX=8000h"ARTICOM",AH=81h"COURIERS",AX=FD02h
  1252.  
  1253. Bitfields for serial line status:
  1254. Bit(s)    Description    (Table 0201)
  1255.  7    timeout
  1256.  6    transmit shift register empty
  1257.  5    transmit holding register empty
  1258.  4    break detected
  1259.  3    framing error
  1260.  2    parity error
  1261.  1    overrun error
  1262.  0    receive data ready
  1263. Note:    for COMM-DRV, if bit 7 is set, an error occurred, and may be retrieved
  1264.       through a separate call (see AX=8000h"COMM-DRV")
  1265.  
  1266. Bitfields for modem status:
  1267. Bit(s)    Description    (Table 0202)
  1268.  7    carrier detect
  1269.  6    ring indicator
  1270.  5    data set ready
  1271.  4    clear to send
  1272.  3    delta carrier detect
  1273.  2    trailing edge of ring indicator
  1274.  1    delta data set ready
  1275.  0    delta clear to send
  1276. --------N-1403--DXFFFF-----------------------
  1277. INT 14 - Connection Manager - RETURN COMMUNICATION PORT STATUS
  1278.     AH = 03h
  1279.     DX = FFFFh
  1280.     AL = connection ID
  1281. Return: AH = return code (00h-02h) (see #0200)
  1282.     BH = line status (see #0203)
  1283.     BL = modem status (see #0202) (only bits 4,5,7; all others zero)
  1284. Notes:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  1285.       function, but redirects the port over the network; if DX is any other
  1286.       value, the call is chained
  1287. SeeAlso: AH=00h/DX=FFFFh,AH=04h/DX=FFFFh,AH=0Ah/DX=FFFFh
  1288.  
  1289. Bitfields for Connection Manager line status:
  1290. Bit(s)    Description    (Table 0203)
  1291.  7    CTS changed
  1292.  6    current CTS state
  1293.  5    timeout
  1294.  4    break
  1295.  3    framing error
  1296.  2    parity error
  1297.  1    overrun
  1298.  0    current carrier state (0 active, 1 no carrier)
  1299. --------S-1404-------------------------------
  1300. INT 14 - SERIAL - EXTENDED INITIALIZE (CONVERTIBLE,PS)
  1301.     AH = 04h
  1302.     AL = break status
  1303.         00h if break
  1304.         01h if no break
  1305.     BH = parity (see #0204)
  1306.     BL = number of stop bits
  1307.         00h one stop bit
  1308.         01h two stop bits (1.5 if 5 bit word length)
  1309.     CH = word length (see #0205)
  1310.     CL = bps rate (see #0206)
  1311.     DX = port number
  1312. Return: AX = port status code (see #0201,#0202)
  1313. SeeAlso: AH=00h,AH=1Eh,AX=8000h"ARTICOM"
  1314.  
  1315. (Table 0204)
  1316. Values for serial port parity:
  1317.  00h    no parity
  1318.  01h    odd parity
  1319.  02h    even parity
  1320.  03h    stick parity odd
  1321.  04h    stick parity even
  1322. SeeAlso: #0197,#0205,#0206,#0207
  1323.  
  1324. (Table 0205)
  1325. Values for serial port word length:
  1326.  00h    5 bits
  1327.  01h    6 bits
  1328.  02h    7 bits
  1329.  03h    8 bits
  1330. SeeAlso: #0197,#0204,#0206,#0242
  1331.  
  1332. (Table 0206)
  1333. Values for serial port bps rate:
  1334.  00h    110 (19200 if ComShare installed)
  1335.  01h    150 (38400 if ComShare installed)
  1336.  02h    300
  1337.  03h    600 (14400 if ComShare installed)
  1338.  04h    1200
  1339.  05h    2400
  1340.  06h    4800 (28800 if ComShare installed)
  1341.  07h    9600
  1342.  08h    19200
  1343. ---ComShare---
  1344.  09h    38400
  1345.  0Ah    57600
  1346.  0Bh    115200
  1347. SeeAlso: #0197,#0204,#0206,#0243,#0250,AH=36h,#0259,#0464,#1616
  1348. --------S-1404-------------------------------
  1349. INT 14 - FOSSIL - INITIALIZE DRIVER
  1350.     AH = 04h
  1351.     DX = port number
  1352.     optionally BX=4F50h
  1353.            ES:CX -> byte to be set upon ^C
  1354. Return: AX = 1954h (if successful)
  1355.     BL = maximum function number supported (excluding 7Eh and above)
  1356.     BH = revision of FOSSIL specification supported
  1357.     DTR is raised
  1358. Note:    the word at offset 6 in the interrupt handler contains 1954h, and the
  1359.       following byte contains the maximum function number supported; this
  1360.       can serve as an installation check
  1361. SeeAlso: AH=05h"FOSSIL",AH=1Ch,INT 11/AH=BCh
  1362. Index:    installation check;FOSSIL
  1363. --------S-1404-------------------------------
  1364. INT 14 - MultiDOS Plus IODRV - INITIALIZE PORT
  1365.     AH = 04h
  1366. Return: port initialized; if Hayes-compatible modem, a connection has been
  1367.       established
  1368. Note:    the port number is stored at offset BEh in the Task Control Block
  1369.       (see #0345 at INT 15/AH=13h"MultiDOS")
  1370. SeeAlso: AH=00h,AH=05h"MultiDOS",AH=20h"MultiDOS",INT 15/AH=13h"MultiDOS"
  1371. --------S-1404-------------------------------
  1372. INT 14 - Digiboard DigiCHANNEL PC/X* - CHANGE BAUD RATE
  1373.     AH = 04h
  1374.     AL = initializing parameters (see #0207)
  1375.     BX = baud rate
  1376.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  1377. Return: AH = status
  1378.         00h successful
  1379.         FFh error
  1380. SeeAlso: AH=05h"Digiboard"
  1381.  
  1382. Bitfields for Digiboard initializing parameters:
  1383. Bit(s)    Description    (Table 0207)
  1384.  7-5    unused
  1385.  4-3    parity (00 none, 01 odd, 11 even)
  1386.  2    stop bits (0 = one, 1 = two)
  1387.  1-0    data bits (00 = five, 01 = six, 10 = seven, 11 = eight)
  1388. SeeAlso: #0204,#0205
  1389. --------S-1404-------------------------------
  1390. INT 14 - MBBIOS - INSTALLATION CHECK
  1391.     AH = 04h
  1392.     DX = port number
  1393. Return: AX = AA55h if installed on specified port
  1394. SeeAlso: AH=00h"MBBIOS",AH=09h"MBBIOS"
  1395. --------N-1404--DXFFFF-----------------------
  1396. INT 14 - Connection Manager - OPEN COMMUNICATION
  1397.     AH = 04h
  1398.     DX = FFFFh
  1399.     ES:DI -> Connection Request protocol vector (see #0208)
  1400. Return: AH = return code
  1401.         00h successful
  1402.         AL = connection ID
  1403.         BH = connection type
  1404.             00h direct connection or no dialing
  1405.             01h Connection Server dialed phone
  1406.         01h no response from Connection Server
  1407.         03h invalid request
  1408. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  1409.       serial ports over an IPX or NetBIOS-based network
  1410. Desc:    initiate a connection to the Connection Server listed in the current
  1411.       Client parameter set
  1412. Notes:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  1413.       function, but redirects the port over the network; if DX is any other
  1414.       value, the call is chained
  1415.     all subvectors of the Connection Request vector are optional; if
  1416.       missing, default values are provided by the default connection
  1417.       parameter set
  1418. SeeAlso: AH=00h/DX=FFFFh,AH=05h/DX=FFFFh,AH=06h/DX=FFFFh,AH=07h/DX=FFFFh
  1419. SeeAlso: AH=0Ah/DX=FFFFh,AH=0Ch/DX=FFFFh
  1420.  
  1421. Format of Connection Manager protocol command vector:
  1422. Offset    Size    Description    (Table 0208)
  1423.  00h    WORD    (big-endian) total length of command (including this word)
  1424.  02h    WORD    (big-endian) command code
  1425.         EF01h Connection Request
  1426.         EF06h Modify Connection Parameters
  1427.  04h  N BYTEs    list of subvectors (see #0210)
  1428.         allowable subvector types are 01h-04h,17h,18h for command code
  1429.           EF01h; 03h,04h for command code EF06h (see #0209)
  1430.  
  1431. (Table 0209)
  1432. Values for Connection Manager subvector type code:
  1433.  01h    Connection ID
  1434.  02h    Destination ID
  1435.  03h    Asynchronous line parameters
  1436.  04h    Data transfer parameters
  1437.  09h    Line speed
  1438.  0Ah    Serial coding
  1439.  0Bh    Packet size
  1440.  0Ch    Timers
  1441.  0Dh    Special characters
  1442.  0Eh    Target ID
  1443.  0Fh    Telephone number
  1444.  10h    ASCII destination ID
  1445.  11h    Parity
  1446.  12h    Bits per character
  1447.  13h    Number of stop bits
  1448.  14h    Packet timer
  1449.  15h    Intercharacter timer
  1450.  17h    Flags
  1451.  18h    Parameter ranges
  1452.  19h    Flow control
  1453.  
  1454. Format of Connection Manager subvector:
  1455. Offset    Size    Description    (Table 0210)
  1456.  00h    BYTE    length of subvector
  1457.  01h    BYTE    type code (see #0209)
  1458.  02h N-2 BYTEs    data, which may include subvectors
  1459. SeeAlso: #0211,#0212,#0213,#0214,#0215,#0216,#0217,#0218,#0219,#0220,#0221
  1460. SeeAlso: #0222,#0223,#0225,#0226,#0227,#0228,#0229,#0230
  1461.  
  1462. Format of Connection ID subvector:
  1463. Offset    Size    Description    (Table 0211)
  1464.  00h    BYTE    03h (length)
  1465.  01h    BYTE    01h (subvector "Connection ID")
  1466.  02h    BYTE    connection ID
  1467.  
  1468. Format of Destination ID subvector:
  1469. Offset    Size    Description    (Table 0212)
  1470.  00h    BYTE    length
  1471.  01h    BYTE    02h (subvector "Destination ID")
  1472.  02h  N BYTEs    subvector(s) of type 0Eh, 0Fh, or 10h
  1473.  
  1474. Format of Asynchronous line parameters subvector:
  1475. Offset    Size    Description    (Table 0213)
  1476.  00h    BYTE    length
  1477.  01h    BYTE    03h (subvector "Asynchronous line parameters")
  1478.  02h  N BYTEs    subvector(s) of type 09h, 0Ah, or 19h
  1479.  
  1480. Format of Data transfer parameters subvector:
  1481. Offset    Size    Description    (Table 0214)
  1482.  00h    BYTE    length
  1483.  01h    BYTE    04h (subvector "Data transfer parameters")
  1484.  02h  N BYTEs    subvector(s) of type 0Bh, 0Ch, or 0Dh
  1485.  
  1486. Format of Line speed subvector:
  1487. Offset    Size    Description    (Table 0215)
  1488.  00h    BYTE    04h (length)
  1489.  01h    BYTE    09h (subvector "Line speed")
  1490.  02h    WORD    bit map, highest set bit selects speed
  1491.         bit 0: 2400
  1492.         bits 1-7: 1800, 1200, 600, 300, 115200, 150, 110 bps
  1493.         bits 8-15: 57600, 38400, 19200, 14400, 9600, 7200, 4800, 3600
  1494.  
  1495. Format of Serial coding subvector:
  1496. Offset    Size    Description    (Table 0216)
  1497.  00h    BYTE    length
  1498.  01h    BYTE    0Ah (subvector "Serial coding")
  1499.  02h  N BYTEs    subvector(s) of type 11h, 12h, or 13h
  1500.  
  1501. Format of Packet size subvector:
  1502. Offset    Size    Description    (Table 0217)
  1503.  00h    BYTE    04h (length)
  1504.  01h    BYTE    0Bh (subvector "Packet size")
  1505.  02h    WORD    (big-endian) packet size, 1 to 1024
  1506.  
  1507. Format of Timers subvector:
  1508. Offset    Size    Description    (Table 0218)
  1509.  00h    BYTE    length
  1510.  01h    BYTE    0Ch (subvector "Timers")
  1511.  02h  8 BYTEs    subvector of type 14h or 15h
  1512.  
  1513. Format of Special characters subvector:
  1514. Offset    Size    Description    (Table 0219)
  1515.  00h    BYTE    length
  1516.  01h    BYTE    0Dh (subvector "Special characters")
  1517.  02h  N BYTEs    list of ASCII characters to be used as EOM or EOB
  1518.  
  1519. Format of Target ID:
  1520. Offset    Size    Description    (Table 0220)
  1521.  00h    BYTE    length
  1522.  01h    BYTE    0Eh (subvector "Target ID")
  1523.  02h  N BYTEs    target ID, 1-16 bytes
  1524.  
  1525. Format of Telephone number subvector:
  1526. Offset    Size    Description    (Table 0221)
  1527.  00h    BYTE    length
  1528.  01h    BYTE    0Fh (subvector "Telephone number")
  1529.  02h  N BYTEs    telephone number
  1530.  
  1531. Format of ASCII destination ID subvector:
  1532. Offset    Size    Description    (Table 0222)
  1533.  00h    BYTE    length
  1534.  01h    BYTE    10h (subvector "ASCII destination ID")
  1535.  02h  N BYTEs    destination ID
  1536.  
  1537. Format of Parity subvector:
  1538. Offset    Size    Description    (Table 0223)
  1539.  00h    BYTE    03h (length)
  1540.  01h    BYTE    11h (subvector "Parity")
  1541.  02h    BYTE    parity type (see #0224)
  1542.  
  1543. Bitfields for Connection Manager parity type:
  1544. Bit(s)    Description    (Table 0224)
  1545.  7    odd
  1546.  6    even
  1547.  5    mark
  1548.  4    space
  1549.  3    none
  1550.  
  1551. Format of Bits per character subvector:
  1552. Offset    Size    Description    (Table 0225)
  1553.  00h    BYTE    03h (length)
  1554.  01h    BYTE    12h (subvector "Bits per character")
  1555.  02h    BYTE    bits per character
  1556.         bit 7: seven
  1557.         bit 6: eight
  1558.  
  1559. Format of Number of stop bits subvector:
  1560. Offset    Size    Description    (Table 0226)
  1561.  00h    BYTE    03h (length)
  1562.  01h    BYTE    13h (subvector "Number of stop bits")
  1563.  02h    BYTE    stop bits
  1564.         bit 7: one
  1565.         bit 6: 1.5
  1566.         bit 5: two
  1567.  
  1568. Format of Packet timer and Intercharacter timer subvectors:
  1569. Offset    Size    Description    (Table 0227)
  1570.  00h    BYTE    04h (length)
  1571.  01h    BYTE    subvector type
  1572.         14h Packet timer
  1573.         15h Intercharacter timer
  1574.  02h    WORD    (big-endian) unit of value representing 20ms
  1575.  
  1576. Format of Flags subvector:
  1577. Offset    Size    Description    (Table 0228)
  1578.  00h    BYTE    03h (length)
  1579.  01h    BYTE    17h (subvector "Flags")
  1580.  02h    BYTE    flags
  1581.         bit 7: queueing requested
  1582.  
  1583. Format of Parameter ranges subvector:
  1584. Offset    Size    Description    (Table 0229)
  1585.  00h    BYTE    length
  1586.  01h    BYTE    18h (subvector "Parameter ranges")
  1587.  02h  N BYTEs    subvector(s) of type 09h, 11h, 12h, or 13h
  1588.  
  1589. Format of Flow control subvector:
  1590. Offset    Size    Description    (Table 0230)
  1591.  00h    BYTE    length (02h-04h)
  1592.  01h    BYTE    19h (subvector "Flow control")
  1593.  02h    BYTE    XOFF character
  1594.  03h    BYTE    XON character
  1595. Note:    if length is 02h, flow control is disabled; if length is 03h, any
  1596.       character will be accepted as XON after an XOFF
  1597. --------S-140400-----------------------------
  1598. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - INSTALLATION CHECK
  1599.     AX = 0400h
  1600. Return: AX = 0FF0h
  1601. SeeAlso: AX=0401h,AX=0408h
  1602. --------S-140401-----------------------------
  1603. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - INITIALIZE MODE
  1604.     AX = 0401h
  1605.     CX = mode
  1606. SeeAlso: AX=0400h,AX=0402h
  1607. --------S-140402-----------------------------
  1608. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - EXTENDED INITIALIZE
  1609.     AX = 0402h
  1610.     CL = parameters
  1611. SeeAlso: AX=0400h,AX=0401h
  1612. --------S-140403-----------------------------
  1613. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - SET TIMEOUT
  1614.     AX = 0403h
  1615.     CX = timeout
  1616. SeeAlso: AX=0400h
  1617. --------S-140404-----------------------------
  1618. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - CLEAR THE RECEIVE BUFFER
  1619.     AX = 0404h
  1620. SeeAlso: AX=0400h,AX=0405h,AX=0406h
  1621. --------S-140405-----------------------------
  1622. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - GET RECEIVE BUFFER COUNT
  1623.     AX = 0405h
  1624. Return: AX = number of characters in buffer
  1625. SeeAlso: AX=0400h,AX=0404h,AX=0407h
  1626. --------S-140406-----------------------------
  1627. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - CLEAR THE TRANSMIT BUFFER
  1628.     AX = 0406h
  1629. SeeAlso: AX=0400h,AX=0404h,AX=0407h
  1630. --------S-140407-----------------------------
  1631. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - GET TRANSMIT BUFFER COUNT
  1632.     AX = 0407h
  1633. Return: AX = number of characters in the buffer
  1634. SeeAlso: AX=0400h,AX=0405h,AX=0406h
  1635. --------S-140408-----------------------------
  1636. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - UNINSTALL
  1637.     AX = 0408h
  1638. SeeAlso: AX=0400h
  1639. --------S-1405-------------------------------
  1640. INT 14 - SERIAL - EXTENDED COMMUNICATION PORT CONTROL (CONVERTIBLE,PS)
  1641.     AH = 05h
  1642.     AL = function
  1643.         00h read modem control register
  1644.           Return: BL = modem control register (see #0231)
  1645.               AH = status
  1646.         01h write modem control register
  1647.           BL = modem control register (see #0231)
  1648.           Return: AX = status
  1649.     DX = port number
  1650. Note:    also supported by ArtiCom
  1651. SeeAlso: AH=00h,AH=1Fh,AX=8000h"ARTICOM",AH=FBh
  1652.  
  1653. Bitfields for modem control register:
  1654. Bit(s)    Description    (Table 0231)
  1655.  0    data terminal ready
  1656.  1    request to send
  1657.  2    OUT1
  1658.  3    OUT2
  1659.  4    LOOP
  1660.  5-7    reserved
  1661. --------S-1405-------------------------------
  1662. INT 14 - FOSSIL - DEINITIALIZE DRIVER
  1663.     AH = 05h
  1664.     DX = port number
  1665. Return: none
  1666.     DTR is not affected
  1667. SeeAlso: AH=00h,AH=04h"FOSSIL",AH=1Dh,AH=8Dh
  1668. --------S-1405-------------------------------
  1669. INT 14 - MultiDOS Plus IODRV - READ CHARACTER FROM PORT
  1670.     AH = 05h
  1671.     AL = timeout in seconds (00h = never)
  1672. Return: AL = status
  1673.         00h successful
  1674.         AH = character read
  1675.         01h read error
  1676.         02h timed out
  1677.         other modem status (CTS, DSR) changed
  1678. Note:    the port number is stored at offset BEh in the Task Control Block
  1679. SeeAlso: AH=02h,AH=04h"MultiDOS",AH=06h"MultiDOS",AH=22h"MultiDOS"
  1680. SeeAlso: INT 15/AH=13h"MultiDOS"
  1681. --------S-1405-------------------------------
  1682. INT 14 - Digiboard DigiCHANNEL PC/X* - CHANGE PROTOCOL
  1683.     AH = 05h
  1684.     AL = protocol (see #0232)
  1685.     BH = new XOFF character (00h = current)
  1686.     BL = new XON character (00h = current)
  1687.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  1688. Return: AH = status
  1689.         00h successful
  1690.         FFh error
  1691. SeeAlso: AH=04h"Digiboard"
  1692.  
  1693. Bitfields for Digiboard protocol:
  1694. Bit(s)    Description    (Table 0232)
  1695.  7-4    unused
  1696.  3    RTS/CTS
  1697.  2    DSR
  1698.  1,0    XON/XOFF
  1699. --------S-1405-------------------------------
  1700. INT 14 - MBBIOS - DROP DTR AND RTS
  1701.     AH = 05h
  1702.     DX = port number
  1703. Return: none
  1704. SeeAlso: AH=00h"MBBIOS",AH=06h"MBBIOS",AH=06h"FOSSIL"
  1705. --------S-1405-------------------------------
  1706. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - CHANGE PORT PROTOCOL
  1707.     AH = 05h
  1708.     AL = new port protocol (see #0233)
  1709.     BH = new XOFF character
  1710.     BL = new XON character
  1711.     DX = port number
  1712. Return: AH = FFh if invalid protocol
  1713. SeeAlso: AH=00h,AH=04h"SERIAL",AH=06h"PC-MOS"
  1714.  
  1715. Bitfields for PC-MOS/386 serial port protocol:
  1716. Bit(s)    Description    (Table 0233)
  1717.  7    set to enable/disable CD monitoring, clear to set protocol
  1718. ---bit 7 set---
  1719.  4    CD monitoring enabled
  1720.  5    automatic restart enabled
  1721. ---bit 7 clear---
  1722.  0    receive XON/XOFF
  1723.  1    transmit XON/XOFF
  1724.  2    DTR/DSR
  1725.  3    RTS/CTS
  1726. --------N-1405--DXFFFF-----------------------
  1727. INT 14 - Connection Manager - CLOSE COMMUNICATION
  1728.     AH = 05h
  1729.     DX = FFFFh
  1730.     AL = connection ID
  1731. Return: AH = return code
  1732.         00h successful
  1733.         01h no such connection
  1734.         02h invalid connection ID
  1735.         AL = correct connection ID
  1736. Desc:    terminate existing connection to allow another one to be established
  1737. Note:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  1738.       function, but redirects the port over the network; if DX is any other
  1739.       value, the call is chained
  1740. SeeAlso: AH=04h/DX=FFFFh,AH=0Dh/DX=FFFFh
  1741. --------S-1406-------------------------------
  1742. INT 14 - FOSSIL - RAISE/LOWER DTR
  1743.     AH = 06h
  1744.     DX = port
  1745.     AL = DTR state to be set
  1746.         00h = lower
  1747.         01h = raise
  1748. SeeAlso: AH=05h"MBBIOS",AH=1Ah
  1749. --------S-1406-------------------------------
  1750. INT 14 - MultiDOS Plus IODRV - WRITE CHARACTER TO PORT
  1751.     AH = 06h
  1752.     AL = character
  1753. Return: AL = status
  1754.         00h successful
  1755. Notes:    the port number is stored at offset BEh in the Task Control Block
  1756.     if output queue is full, the calling task is blocked until the
  1757.       character can be stored
  1758. SeeAlso: AH=01h,AH=04h"MultiDOS",AH=05h"MultiDOS",AH=21h"MultiDOS"
  1759. SeeAlso: INT 15/AH=13h"MultiDOS"
  1760. --------S-1406-------------------------------
  1761. INT 14 - MBBIOS - RAISE DTR AND RTS
  1762.     AH = 06h
  1763.     DX = port number
  1764. Return: none
  1765. SeeAlso: AH=05h"MBBIOS",AH=07h"MBBIOS"
  1766. --------S-1406-------------------------------
  1767. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - DRIVER 'ID' FUNCTION
  1768.     AH = 06h
  1769.     DX = port number
  1770. Return: AH bit 7 set
  1771.     AL = number of highest function supported by driver
  1772. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  1773.       operating system by The Software Link, Inc.
  1774. SeeAlso: AH=18h"PC-MOS"
  1775. --------N-1406-------------------------------
  1776. INT 14 - TelAPI - WRITE???
  1777.     AH = 06h
  1778.     CX = number of characters to write???
  1779.     DX = port number
  1780.     ES:DI -> buffer containing data???
  1781. Return: AX = number of characters actually sent??? (negative on error)
  1782.     CX = ???
  1783. Note:    under Novell TELAPI.EXE v4.01, this function and AH=07h are implemented
  1784.       with identical code
  1785. SeeAlso: AH=07h"TelAPI",AH=E0h"TelAPI"
  1786. --------N-1406--DXFFFF-----------------------
  1787. INT 14 - Connection Manager - SEND CHARACTER BLOCK
  1788.     AH = 06h
  1789.     DX = FFFFh
  1790.     AL = connection ID
  1791.     CX = number of characters to send
  1792.     ES:DI -> buffer containing data to be sent
  1793. Return: AH = return code (see #0200)
  1794. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  1795.       serial ports over an IPX or NetBIOS-based network
  1796. SeeAlso: AH=04h/DX=FFFFh,AH=07h/DX=FFFFh,AH=09h/DX=FFFFh
  1797. --------S-1407-------------------------------
  1798. INT 14 - FOSSIL - RETURN TIMER TICK PARAMETERS
  1799.     AH = 07h
  1800. Return: AL = timer tick interrupt number
  1801.     AH = ticks per second on interrupt number in AL
  1802.     DX = approximate number of milliseconds per tick
  1803. SeeAlso: AH=16h
  1804. --------S-1407-------------------------------
  1805. INT 14 - MultiDOS Plus IODRV - GET PORT STATUS
  1806.     AH = 07h
  1807. Return: CL = modem status (see #0202)
  1808.     CH = character at head of input queue (if any)
  1809.     DX = number of characters in input queue
  1810. Note:    the port number is stored at offset BEh in the Task Control Block
  1811. SeeAlso: AH=03h,AH=05h"MultiDOS",AH=08h"MultiDOS",AH=09h"MultiDOS"
  1812. SeeAlso: AH=23h"MultiDOS",INT 15/AH=13h"MultiDOS"
  1813. --------S-1407-------------------------------
  1814. INT 14 - MBBIOS - SEND BREAK
  1815.     AH = 07h
  1816.     DX = port number
  1817. Return: none
  1818. SeeAlso: AH=06h"MBBIOS",AH=FAh"EBIOS"
  1819. --------S-1407-------------------------------
  1820. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - SEND RS-232 BREAK
  1821.     AH = 07h
  1822.     BX = duration of break in clock ticks
  1823.     DX = port number
  1824. Return: nothing
  1825. --------N-1407-------------------------------
  1826. INT 14 - TelAPI - WRITE???
  1827.     AH = 07h
  1828.     CX = number of characters to write???
  1829.     DX = port number
  1830.     ES:DI -> buffer containing data???
  1831. Return: AX = number of characters actually sent??? (negative on error)
  1832.     CX = ???
  1833. Note:    under Novell TELAPI.EXE v4.01, this function and AH=06h are implemented
  1834.       with identical code
  1835. SeeAlso: AH=06h"TelAPI",AH=E0h"TelAPI"
  1836. --------N-1407--DXFFFF-----------------------
  1837. INT 14 - Connection Manager - RECEIVE CHARACTER BLOCK
  1838.     AH = 07h
  1839.     DX = FFFFh
  1840.     AL = connection ID
  1841.     BL = flag
  1842.         00h wait for data
  1843.         nonzero do not wait if no data avaiable
  1844.     CX = size of receive buffer
  1845.     ES:DI -> buffer for received characters
  1846. Return: AH = return code (00h-02h,04h,FFh) (see #0200)
  1847.     BH = line status (see #0203)
  1848.     CX = number of characters received
  1849. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  1850.       serial ports over an IPX or NetBIOS-based network
  1851. SeeAlso: AH=01h/DX=FFFFh,AH=04h/DX=FFFFh,AH=06h/DX=FFFFh
  1852. --------S-1408-------------------------------
  1853. INT 14 - FOSSIL - FLUSH OUTPUT BUFFER WAITING TILL ALL OUTPUT IS DONE
  1854.     AH = 08h
  1855.     DX = port number
  1856. SeeAlso: AH=09h"FOSSIL"
  1857. --------S-1408-------------------------------
  1858. INT 14 - MultiDOS Plus 4.0 IODRV - GET AND RESET PORT LINE STATUS
  1859.     AH = 08h
  1860. Return: AL = line status (see #0201)
  1861.     AH destroyed
  1862. Notes:    the port number is stored at offset BEh in the Task Control Block
  1863.     on every line status change, the line status is ORed with the line
  1864.       status accumulator; this function returns the accumulator and clears
  1865.       it
  1866. SeeAlso: AH=03h,AH=04h"MultiDOS",AH=07h"MultiDOS",INT 15/AH=13h"MultiDOS"
  1867. --------S-1408-------------------------------
  1868. INT 14 - Digiboard DigiCHANNEL PC/X* - ALTERNATE STATUS CHECK
  1869.     AH = 08h
  1870.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  1871. Return: AH = RS232 status bits (see #0201 at AH=03h)
  1872.     ZF set if no characters queued
  1873.     ZF clear if character available
  1874.         AL = next character
  1875. SeeAlso: AH=03h,AH=08h"PC-MOS",AH=09h"Digiboard",AH=14h"Digiboard"
  1876. --------S-1408-------------------------------
  1877. INT 14 - MBBIOS - NON-DESTRUCTIVE READ
  1878.     AH = 08h
  1879.     DX = port number
  1880. Return: AL = character (if AH bit 0 set)
  1881.     AH = status (see #0201)
  1882. SeeAlso: AH=0Bh"MBBIOS",AH=0Ch"FOSSIL"
  1883. --------S-1408-------------------------------
  1884. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - INPUT STATUS CHECK
  1885.     AH = 08h
  1886.     DX = port number
  1887. Return: CF set if carrier loss detected
  1888.     ZF set if input buffer empty
  1889.     ZF clear if characters available
  1890.         AL = next character dequeued
  1891. --------N-1408--DXFFFF-----------------------
  1892. INT 14 - Connection Manager - RETURN DEFAULT CONNECTION PARAMETERS
  1893.     AH = 08h
  1894.     DX = FFFFh
  1895.     CX = size of buffer for parameters or 0000h to get length
  1896.     ES:DI -> buffer for parameter vector (see #0208)
  1897. Return: AH = return code
  1898.         00h successful
  1899.         CX = number of bytes required (if CX=0000h on entry)
  1900.         CX = number of bytes omitted for lack of space (if CX nonzero)
  1901.         nonzero invalid request
  1902. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  1903.       serial ports over an IPX or NetBIOS-based network
  1904. SeeAlso: AH=00h/DX=FFFFh,AH=0Fh/DX=FFFFh
  1905. --------S-1409-------------------------------
  1906. INT 14 - FOSSIL - PURGE OUTPUT BUFFER THROWING AWAY ALL PENDING OUTPUT
  1907.     AH = 09h
  1908.     DX = port number
  1909. SeeAlso: AH=08h"FOSSIL",AH=0Ah"FOSSIL",AH=88h
  1910. --------S-1409-------------------------------
  1911. INT 14 - MultiDOS Plus IODRV - RESET PORT STATUS
  1912.     AH = 09h
  1913. Return: modem status byte cleared
  1914. Note:    the port number is stored at offset BEh in the Task Control Block
  1915. SeeAlso: AH=04h"MultiDOS",AH=07h"MultiDOS",INT 15/AH=13h"MultiDOS"
  1916. --------S-1409-------------------------------
  1917. INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR BUFFERS
  1918.     AH = 09h
  1919.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  1920. Return: AH = status
  1921.         00h successful
  1922.         FFh error
  1923. SeeAlso: AH=08h"Digiboard",AH=0Ah"Digiboard",AH=10h"Digiboard"
  1924. --------S-1409-------------------------------
  1925. INT 14 - MBBIOS - GET/SET OPTIONS
  1926.     AH = 09h
  1927.     AL = option byte (see #0234)
  1928.     DX = port number???
  1929. Return: AL = old option byte
  1930. SeeAlso: AH=00h"MBBIOS",AH=04h"MBBIOS",AH=10h"FOSSIL"
  1931.  
  1932. Bitfields for MBBIOS option byte:
  1933. Bit(s)    Description    (Table 0234)
  1934.  0    transmit buffering enabled
  1935.  2    hardware handshaking enabled
  1936.  5    high-speed option enabled (see AH=00h"MBBIOS",#0199)
  1937.  other    reserved
  1938. --------S-1409-------------------------------
  1939. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - RESET I/O BUFFER POINTERS
  1940.     AH = 09h
  1941.     DX = port number
  1942. Return: nothing
  1943. SeeAlso: AH=13h"PC-MOS"
  1944. --------N-1409--DXFFFF-----------------------
  1945. INT 14 - Connection Manager - SEND BREAK
  1946.     AH = 09h
  1947.     DX = FFFFh
  1948.     AL = connection ID
  1949. Return: AH = return code (00h-02h) (see #0200 at AH=00h/DX=FFFFh)
  1950. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  1951.       serial ports over an IPX or NetBIOS-based network
  1952. SeeAlso: AH=02h/DX=FFFFh,AH=03h/DX=FFFFh
  1953. --------S-140A-------------------------------
  1954. INT 14 - FOSSIL - PURGE INPUT BUFFER THROWING AWAY ALL PENDING INPUT
  1955.     AH = 0Ah
  1956.     DX = port number
  1957. SeeAlso: AH=09h"FOSSIL",AH=85h
  1958. --------S-140A-------------------------------
  1959. INT 14 - Digiboard DigiCHANNEL PC/X* - INPUT QUEUE CHECK
  1960.     AH = 0Ah
  1961.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  1962. Return: AX = number of characters available in buffer
  1963. Note:    this function is also supported by the PC-MOS/386 v5.01 $serial.sys
  1964. SeeAlso: AH=09h"Digiboard",AH=0Dh"Digiboard"
  1965. --------S-140A-------------------------------
  1966. INT 14 - MBBIOS - WRITE BUFFER
  1967.     AH = 0Ah
  1968.     CX = count
  1969.     ES:DI -> buffer (see #0235)
  1970. Return: AX = status (see #0201,#0202)
  1971.     CX = unsent character count
  1972.     DI updated
  1973. Note:    the PACCOM version of MBBIOS does not use CX or ES:DI; instead, ES
  1974.       contains the segment of a buffer containing the packet to be sent,
  1975.       which by default will be freed once the packet has been sent.     Use
  1976.       AH=0Ch"MBBIOS" to allocate the buffer.
  1977. SeeAlso: AH=01h,AH=0Bh"MBBIOS",AH=0Ch"MBBIOS",AH=19h"FOSSIL"
  1978.  
  1979. Format of MBBIOS PACCOM buffer:
  1980. Offset    Size    Description    (Table 0235)
  1981.  00h 504 BYTEs    data area
  1982. 1F8h    WORD    length of data in data area
  1983. 1FAh    BYTE    flags/status
  1984.         bit 7: don't discard buffer after transmitting data
  1985.         bit 6: buffer has been transmitted
  1986. 1FBh    BYTE    reserved (0) for additional flags/status
  1987. 1FCh    WORD    user data
  1988. 1FEh    WORD    MBBIOS-internal pointer to next buffer
  1989. --------N-140A--DXFFFF-----------------------
  1990. INT 14 - Connection Manager - MODIFY ACTIVE CONNECTION PARAMETERS
  1991.     AH = 0Ah
  1992.     DX = FFFFh
  1993.     ES:DI -> vector string containing new parameters (see #0208)
  1994. Return: AH = return code (00h-03h,06h) (see #0200)
  1995. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  1996.       serial ports over an IPX or NetBIOS-based network
  1997. Note:    any subvectors valid for the Change Parameters command replace the
  1998.       existing values in the current set
  1999. SeeAlso: AH=00h/DX=FFFFh,AH=0Fh/DX=FFFFh
  2000. --------S-140B-------------------------------
  2001. INT 14 - FOSSIL - TRANSMIT NO WAIT
  2002.     AH = 0Bh
  2003.     AL = character
  2004.     DX = port number
  2005. Return: AX = result
  2006.         0000h character not accepted
  2007.         0001h character accepted
  2008. SeeAlso: AH=01h
  2009. --------S-140B-------------------------------
  2010. INT 14 - MBBIOS - READ BUFFER
  2011.     AH = 0Bh
  2012.     CX = size of buffer
  2013.     ES:DI -> buffer
  2014. Return: AH = composite line status (see #0201) formed by ORing all statuses
  2015.           on receive interrupts; bit 0 set if additional characters
  2016.           available
  2017.     AL = composite modem status (see #0202) formed by ORing all statuses
  2018.     CX = number of characters actually read
  2019.     DI updated
  2020. Note:    the PACCOM version of MBBIOS does not use CX or ES:DI on call,
  2021.       instead returning ES set to the segment of the buffer containing a
  2022.       received packet, or 0000h if no packets available; the buffer may
  2023.       be freed with AH=0Ch"MBBIOS"
  2024. SeeAlso: AH=02h,AH=08h"MBBIOS",AH=0Ah"MBBIOS",AH=0Ch"MBBIOS",AH=18h"FOSSIL"
  2025. --------N-140B--DXFFFF-----------------------
  2026. INT 14 - Connection Manager - PREPARE FOR INBOUND CONNECTION
  2027.     AH = 0Bh
  2028.     DX = FFFFh
  2029.     AL = service name
  2030.         00h use parameter file or default
  2031.         01h use specified name
  2032.         ES:DI -> 16-byte blank-padded name
  2033.     BH = connection notification
  2034.         00h program awaiting connection, don't notify user
  2035.         01h notify user on connecting
  2036.     BL = connection type
  2037.         00h connection will use Connection Manager API
  2038. Return: AH = return code (00h-02h) (see #0200 at AH=00h/DX=FFFFh)
  2039.     AL = connection ID if AH=00h
  2040. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  2041.       serial ports over an IPX or NetBIOS-based network
  2042. SeeAlso: AH=04h/DX=FFFFh,AH=0Ch/DX=FFFFh,AH=10h/DX=FFFFh
  2043. --------S-140C-------------------------------
  2044. INT 14 - FOSSIL - NON-DESTRUCTIVE READ AHEAD
  2045.     AH = 0Ch
  2046.     DX = port number
  2047. Return: AX = FFFFh character not available
  2048.     AX = 00xxh character xx available
  2049. SeeAlso: AH=08h"MBBIOS",AH=20h"FOSSIL"
  2050. --------S-140C-------------------------------
  2051. INT 14 - MBBIOS PACCOM support - BUFFER MANAGEMENT
  2052.     AH = 0Ch
  2053.     ES = segment of buffer to free, or 0000h to allocate new buffer
  2054. Return: ES = segment of allocated buffer (if ES=0000h on entry)
  2055. Note:    the PACCOM version of MBBIOS uses only ES as buffer address for
  2056.       AH=0Ah and AH=0Bh
  2057. SeeAlso: AH=0Ah"MBBIOS",AH=0Bh"MBBIOS"
  2058. --------N-140C--DXFFFF-----------------------
  2059. INT 14 - Connection Manager - TEST FOR INBOUND CONNECTION REQUEST
  2060.     AH = 0Ch
  2061.     DX = FFFFh
  2062.     AL = connection ID from AH=0Bh/DX=FFFFh
  2063. Return: AH = return code (00h-03h) (see also #0200 at AH=00h/DX=FFFFh)
  2064.         03h not prepared for inbound connection
  2065.     AL = connection ID (if AH=00h) or correct connection ID (if AH=02h)
  2066. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  2067.       serial ports over an IPX or NetBIOS-based network
  2068. SeeAlso: AH=03h/DX=FFFFh,AH=04h/DX=FFFFh,AH=0Bh/DX=FFFFh
  2069. --------S-140D-------------------------------
  2070. INT 14 - FOSSIL - KEYBOARD READ WITHOUT WAIT
  2071.     AH = 0Dh
  2072. Return: AX = result
  2073.         FFFFh character not available
  2074.         xxyyh standard IBM-style scan code
  2075. SeeAlso: AH=0Eh
  2076. --------S-140D-------------------------------
  2077. INT 14 - Digiboard DigiCHANNEL PC/X* - GET POINTER TO CH_KEY_RDY FLAG
  2078.     AH = 0Dh
  2079.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  2080. Return: ES:BX -> CH_KEY_RDY flag (see #0236)
  2081. SeeAlso: AH=0Ah"Digiboard"
  2082.  
  2083. (Table 0236)
  2084. Values for Digiboard CH_KEY_RDY flag:
  2085.  00h    receive buffer empty
  2086.  FFh    characters available
  2087. --------S-140D-------------------------------
  2088. INT 14 - MBBIOS PACCOM support - SET TXD
  2089.     AH = 0Dh
  2090.     AL = new setting (FFh = 1.0)
  2091. Desc:    specify the time from RTS to start or packet
  2092. SeeAlso: AX=0D00h,AH=0Eh"MBBIOS",AH=0Fh"MBBIOS"
  2093. --------N-140D--DXFFFF-----------------------
  2094. INT 14 - Connection Manager - TERMINATE CONNECTION CLIENT ACTIVITY
  2095.     AH = 0Dh
  2096.     DX = FFFFh
  2097. Return: AH = return code
  2098.         00h successful
  2099.         nonzero operation not terminated
  2100. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  2101.       serial ports over an IPX or NetBIOS-based network
  2102. Desc:    end all Connection Client TSR activity to allow it to be removed from
  2103.       memory
  2104. SeeAlso: AH=05h/DX=FFFFh,AH=6Fh/BX=FFFFh
  2105. --------S-140D00-----------------------------
  2106. INT 14 - MBBIOS - GET AVAILABLE BYTES
  2107.     AX = 0D00h
  2108. Return: AX = bytes in transmit buffer
  2109.     CX = bytes in receive buffer
  2110. SeeAlso: AH=0Ah"MBBIOS",AH=0Bh"MBBIOS"
  2111. --------S-140D01-----------------------------
  2112. INT 14 - MBBIOS - LOWER ALL MODEM CONTROL SIGNALS
  2113.     AX = 0D01h
  2114. Note:    this function lowers DTR, RTS, etc.
  2115. SeeAlso: AX=0D02h
  2116. --------S-140D02-----------------------------
  2117. INT 14 - MBBIOS - RAISE ALL MODEM CONTROL SIGNALS
  2118.     AX = 0D02h
  2119. Note:    this function raises DTR, RTS, etc.
  2120. SeeAlso: AX=0D01h
  2121. --------S-140D03-----------------------------
  2122. INT 14 - MBBIOS - SET HANDSHAKE BYTE
  2123.     AX = 0D03h
  2124.     CL = new handshake byte
  2125. Return: CL = previous handshake byte
  2126. Note:    this function lowers DTR, RTS, etc.
  2127. --------S-140E-------------------------------
  2128. INT 14 - FOSSIL - KEYBOARD READ WITH WAIT
  2129.     AH = 0Eh
  2130. Return: AX = xxyyh standard IBM-style scan code
  2131. SeeAlso: AH=0Dh"FOSSIL"
  2132. --------S-140E-------------------------------
  2133. INT 14 - Digiboard DigiCHANNEL PC/X* - WRITE STRING
  2134.     AH = 0Eh
  2135.     CX = number of characters to write
  2136.     ES:BX -> string
  2137.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  2138. Return: AX = number of characters actually written
  2139.     ZF clear if successful
  2140.     ZF set on error
  2141. SeeAlso: AH=0Fh"Digiboard"
  2142. --------S-140E-------------------------------
  2143. INT 14 - MBBIOS PACCOM support - SET PERSISTENCE
  2144.     AH = 0Eh
  2145.     AL = new setting (FFh = 1.0)
  2146. Desc:    specify the time from end of DCD to RTS
  2147. SeeAlso: AH=0Dh"MBBIOS",AH=0Fh"MBBIOS"
  2148. --------N-140E--DXFFFF-----------------------
  2149. INT 14 - Connection Manager - SET HARDWARE FLOW STATE
  2150.     AH = 0Eh
  2151.     DX = FFFFh
  2152.     AL = connection ID from AH=04h/DX=FFFFh
  2153.     BL = RTS state (00h off, 01h on)
  2154. Return: AH = return code (00h-03h) (see also #0200 at AH=00h/DX=FFFFh)
  2155.         03h invalid request (BL not 00h or 01h)
  2156. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  2157.       serial ports over an IPX or NetBIOS-based network
  2158. SeeAlso: AH=03h/DX=FFFFh,AH=0Ah/DX=FFFFh
  2159. --------S-140F-------------------------------
  2160. INT 14 - FOSSIL - ENABLE/DISABLE FLOW CONTROL
  2161.     AH = 0Fh
  2162.     AL = bit mask describing requested flow control (see #0237)
  2163.     DX = port number
  2164. SeeAlso: AH=09h"MBBIOS",AH=10h"FOSSIL"
  2165.  
  2166. Bitfields for FOSSIL requested flow control:
  2167. Bit(s)    Description    (Table 0237)
  2168.  0    XON/XOFF on transmit (watch for XOFF while sending)
  2169.  1    CTS/RTS (CTS on transmit/RTS on receive)
  2170.  2    reserved
  2171.  3    XON/XOFF on receive (send XOFF when buffer near full)
  2172.  4-7    all 1
  2173. --------S-140F-------------------------------
  2174. INT 14 - Digiboard DigiCHANNEL PC/X* - READ STRING
  2175.     AH = 0Fh
  2176.     CX = number of characters to read
  2177.     ES:BX -> buffer
  2178.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  2179. Return: AX = number of characters read
  2180.     ZF clear if successful
  2181.     ZF set on error (line status or wrong number of characters)
  2182. SeeAlso: AH=0Eh"Digiboard"
  2183. --------S-140F-------------------------------
  2184. INT 14 - MBBIOS PACCOM support - SET SLOT TIME
  2185.     AH = 0Fh
  2186.     AL = new setting in clock ticks
  2187. Desc:    specify the time from end of DCD to RTS
  2188. SeeAlso: AH=0Dh"MBBIOS",AH=0Eh"MBBIOS",AH=10h"MBBIOS"
  2189. --------N-140F--DXFFFF-----------------------
  2190. INT 14 - Connection Manager - RETURN ACTIVE CONNECTION PARAMETERS
  2191.     AH = 0Fh
  2192.     DX = FFFFh
  2193.     AL = connection ID
  2194.     CX = size of buffer or 0000h to get length of returned vector
  2195.     ES:DI -> buffer for connection parameter vector (see #0208)
  2196. Return: AH = return code (00h-02h,06h) (see #0200 at AH=00h/DX=FFFFh)
  2197.     CX = number of bytes which could not be returned because the given
  2198.           buffer was too small
  2199. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  2200.       serial ports over an IPX or NetBIOS-based network
  2201. SeeAlso: AH=08h/DX=FFFFh,AH=0Ah/DX=FFFFh
  2202. --------S-1410-------------------------------
  2203. INT 14 - FOSSIL - EXTENDED ^C/^K CHECKING AND TRANSMIT ON/OFF
  2204.     AH = 10h
  2205.     AL = bit mask
  2206.         bit 0: enable/disable ^C/^K checking
  2207.         bit 1: enable/disable the transmitter
  2208.     DX = port number
  2209. SeeAlso: AH=0Fh"FOSSIL"
  2210. --------S-1410-------------------------------
  2211. INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR RECEIVE BUFFER
  2212.     AH = 10h
  2213.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  2214. Return: AH = status
  2215.         00h successful
  2216.         FFh error
  2217. SeeAlso: AH=09h"Digiboard",AH=11h"Digiboard"
  2218. --------S-1410-------------------------------
  2219. INT 14 - MBBIOS PACCOM support - SET CRC WAIT
  2220.     AH = 10h
  2221.     AL = new setting in clock ticks (should be at least 5 character times)
  2222. Desc:    specify the time from start of last character to dropping RTS
  2223. SeeAlso: AH=0Dh"MBBIOS",AH=0Fh"MBBIOS"
  2224. --------N-1410--DXFFFF-----------------------
  2225. INT 14 - Connection Manager - QUERY SERVICE NAMES
  2226.     AH = 10h
  2227.     DX = FFFFh
  2228.     CL = subfunction
  2229.         00h search first
  2230.         01h search next
  2231.     ES:DI -> pattern buffer (see #0238)
  2232. Return: AH = return code (00h,01h,03h,06h) (see also #0200 at AH=00h/DX=FFFFh)
  2233.         01h no (more) matching names
  2234.         03h invalid request
  2235.     ES:DI buffer filled with reply buffer (see #0238) containing matched
  2236.           name if AH=00h
  2237. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  2238.       serial ports over an IPX or NetBIOS-based network
  2239. Desc:    obtain the names of groups and lines available for connection requests,
  2240.       and the names of active Connection Servers
  2241. SeeAlso: AH=04h/DX=FFFFh,AH=0Bh/DX=FFFFh
  2242.  
  2243. Format of Connection Manager pattern/reply buffer:
  2244. Offset    Size    Description    (Table 0238)
  2245.  00h    WORD    length of pattern (30h or 32h)
  2246.  02h 16 BYTEs    server pattern or name
  2247.  12h 16 BYTEs    group pattern or name
  2248.  22h 16 BYTEs    line pattern or name
  2249.  23h    BYTE    (optional) ???
  2250.  24h    BYTE    (optional, returned) current line status
  2251.         00h available
  2252.         01h out of service
  2253.         02h currently allocated to a connection
  2254. Note:    pattern may include '?' wildcard to match any character
  2255. --------S-1411-------------------------------
  2256. INT 14 - FOSSIL - SET CURRENT CURSOR LOCATION
  2257.     AH = 11h
  2258.     DH = row
  2259.     DL = column
  2260. Note:    this is the same as INT 10/AH=02h
  2261. SeeAlso: AH=12h"FOSSIL"
  2262. --------S-1411-------------------------------
  2263. INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR TRANSMIT BUFFER
  2264.     AH = 11h
  2265.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  2266. Return: AH = status
  2267.         00h successful
  2268.         FFh error
  2269. SeeAlso: AH=09h"Digiboard",AH=10h"Digiboard"
  2270. --------S-1411-------------------------------
  2271. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - DISABLE PORT
  2272.     AH = 11h
  2273.     DX = port number
  2274. Return: AL = status
  2275.         00h successful
  2276.         01h IRQ for port is shared
  2277.         02h IRQ was reserved
  2278. SeeAlso: AH=04h,AH=05h,AH=12h"PC-MOS"
  2279. --------S-1412-------------------------------
  2280. INT 14 - FOSSIL - READ CURRENT CURSOR LOCATION
  2281.     AH = 12h
  2282. Return: DH = row
  2283.     DL = column
  2284. Note:    this is the same as INT 10/AH=03h
  2285. SeeAlso: AH=11h"FOSSIL"
  2286. --------S-1412-------------------------------
  2287. INT 14 - Digiboard DigiCHANNEL PC/X* - GET TRANSMIT BUFFER FREE SPACE
  2288.     AH = 12h
  2289.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  2290. Return: AX = number of bytes free
  2291. SeeAlso: AH=0Ah"Digiboard",AH=14h"Digiboard"
  2292. --------S-1412-------------------------------
  2293. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - GET CURRENT PORT PARAMETERS
  2294.     AH = 12h
  2295.     DX = port number
  2296. Return: AH = status
  2297.         FFh port number invalid
  2298.     AL = line parameters (see #0201)
  2299.     AH = flow control configuration (see #0233 at AH=05h"PC-MOS")
  2300.     CX:BX = bps rate
  2301.     DL = XOFF character or 00h for none
  2302.     DH = XON character or 00h for none
  2303. --------S-1413-------------------------------
  2304. INT 14 - FOSSIL - SINGLE CHARACTER ANSI WRITE TO SCREEN
  2305.     AH = 13h
  2306.     AL = character
  2307. Note:    should not be called if it is unsafe to call DOS
  2308. SeeAlso: AH=15h
  2309. --------S-1413-------------------------------
  2310. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - REGISTER A PORT WITH A TERMINAL
  2311.     AH = 13h
  2312.     DX = port number
  2313. Return: AH = status
  2314.         FFh port number invalid
  2315.         else
  2316.         ES:BX -> BYTE flag (00h buffer empty, FFh buffer contains data)
  2317. SeeAlso: AH=17h"PC-MOS"
  2318. --------S-1414-------------------------------
  2319. INT 14 - FOSSIL - ENABLE OR DISABLE WATCHDOG PROCESSING
  2320.     AH = 14h
  2321.     AL = 01h enable watchdog
  2322.          00h disable watchdog
  2323.     DX = port number
  2324. SeeAlso: INT 21/AH=2Bh/CX=6269h/DX=742Dh
  2325. --------S-1414-------------------------------
  2326. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - OUTPUT STRING
  2327.     AH = 14h
  2328.     CX = number of characters in string
  2329.     DX = port number
  2330.     ES:BX -> string to be sent
  2331.     SI = timeout in timer ticks or 0000h for default
  2332. Return: AX = number of bytes actually sent
  2333.     ZF clear if successful
  2334.     ZF set on timeout
  2335. SeeAlso: AH=01h,AH=15h"PC-MOS"
  2336. --------S-1414-------------------------------
  2337. INT 14 - Digiboard - GET NUMBER OF BOARDS INSTALLED
  2338.     AH = 14h
  2339. Return: AX = number of boards installed
  2340. SeeAlso: AH=08h"Digiboard",AH=15h"Digiboard"
  2341. --------S-1415-------------------------------
  2342. INT 14 - FOSSIL - WRITE CHARACTER TO SCREEN USING BIOS SUPPORT ROUTINES
  2343.     AH = 15h
  2344.     AL = character
  2345. SeeAlso: AH=13h"FOSSIL"
  2346. --------S-1415-------------------------------
  2347. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - INPUT STRING
  2348.     AH = 15h
  2349.     CX = size of buffer
  2350.     DX = port number
  2351.     ES:BX -> buffer for received characters
  2352.     SI = timeout in clock ticks or 0000h for default
  2353. Return: AX = number of characters actually read
  2354.     ZF set on timeout (no data available)
  2355. SeeAlso: AH=02h,AH=14h"PC-MOS",AH=16h"PC-MOS"
  2356. --------S-1415-------------------------------
  2357. INT 14 - Digiboard - ENABLE/DISABLE MEMORY
  2358.     AH = 15h
  2359.     AL = new state (00h disabled, 01h enabled)
  2360. Return: AH = status
  2361.         00h successful
  2362.         80h error
  2363.         FFh error
  2364. SeeAlso: AH=14h"Digiboard",AH=16h"Digiboard"
  2365. --------S-1416-------------------------------
  2366. INT 14 - FOSSIL - INSERT/DELETE FUNCTION FROM TIMER TICK CHAIN
  2367.     AH = 16h
  2368.     AL = function
  2369.         00h = delete
  2370.         01h = add
  2371.     ES:DX -> routine to call
  2372. Return: AX = status
  2373.         0000h successful
  2374.         0001h unsuccessful
  2375. SeeAlso: AH=07h"FOSSIL"
  2376. --------S-1416-------------------------------
  2377. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - LINK TO ANOTHER SERIAL DRIVER
  2378.     AH = 16h
  2379.     ES:BX -> calling driver's INT 14 entry point
  2380. Return: nothing
  2381. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  2382.       operating system by The Software Link, Inc.
  2383. --------S-1416-------------------------------
  2384. INT 14 - Digiboard DigiCHANNEL PC/X* - CCB COMMAND
  2385.     AH = 16h
  2386.     AL = CCB command number (see #0239) (see also following entries)
  2387.     BL = byte 2
  2388.     BH = byte 3
  2389.     CL = byte 1 (for all channel functions except 4Eh and 4Fh)
  2390.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  2391. Return: AH = status
  2392.         00h successful
  2393.         80h error
  2394.         FFh error
  2395. SeeAlso: AX=1646h,AH=18h"Digiboard"
  2396.  
  2397. (Table 0239)
  2398. Values for Digiboard CCB command number:
  2399.  40h    Set Receive Mid Water Mark
  2400.  41h    Set Receive High Water Mark
  2401.  42h    Flush Receive Buffer
  2402.  43h    Flush Transmit Buffer
  2403.  44h    Transmit Pause
  2404.  45h    Transmit Resume
  2405.  46h    Set Interrupt to Host Mask
  2406.  47h    Set Baud, Data, Stop and Parity
  2407.  48h    Send Break
  2408.  49h    Set Modem Lines
  2409.  4Ah    Set Break Count
  2410.  4Bh    Set Handshake
  2411.  4Ch    Set Xon/Xoff Characters
  2412.  4Dh    Set Transmit Mid Water Mark
  2413.  4Eh    IRQ Polling Timer to Host
  2414.  4Fh    Buffer Set All
  2415.  50h    Port On
  2416.  51h    Port Off
  2417.  52h    Receive Pause
  2418.  53h    Special Character Interrupt
  2419.  54h    RS-422 Enable
  2420. --------S-141646-----------------------------
  2421. INT 14 - Digiboard - CCB COMMAND - SET INTERRUPT TO HOST MASK
  2422.     AX = 1646h
  2423.     BL = bits to set
  2424.     BH = bits to clear
  2425.     CL = byte 1
  2426.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  2427. Return: AH = status
  2428.         00h successful
  2429.         80h error
  2430.         FFh error
  2431. SeeAlso: AH=16h"Digiboard",AX=1647h
  2432. --------S-141647-----------------------------
  2433. INT 14 - Digiboard - CCB COMMAND - SET BAUD/DATABITS/STOPBITS/PARITY
  2434.     AX = 1647h
  2435.     BL = baud
  2436.     BH = datatype
  2437.     CL = byte 1
  2438.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  2439. Return: AH = status
  2440.         00h successful
  2441.         80h error
  2442.         FFh error
  2443. SeeAlso: AH=16h"Digiboard",AX=1646h,AX=1649h
  2444. --------S-141649-----------------------------
  2445. INT 14 - Digiboard - CCB COMMAND - SET MODEM LINES
  2446.     AX = 1649h
  2447.     BL = bits to set
  2448.     BH = bits to clear
  2449.     CL = byte 1
  2450.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  2451. Return: AH = status
  2452.         00h successful
  2453.         80h error
  2454.         FFh error
  2455. SeeAlso: AH=16h"Digiboard",AX=1647h
  2456. --------S-14164A-----------------------------
  2457. INT 14 - Digiboard - CCB COMMAND - SET BREAK COUNT
  2458.     AX = 164Ah
  2459.     BL = break count
  2460.     CL = byte 1
  2461.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  2462. Return: AH = status
  2463.         00h successful
  2464.         80h error
  2465.         FFh error
  2466. SeeAlso: AH=16h"Digiboard",AX=1649h,AX=164Bh
  2467. --------S-14164B-----------------------------
  2468. INT 14 - Digiboard - CCB COMMAND - SET HANDSHAKE
  2469.     AX = 164Bh
  2470.     BL = bits to set
  2471.     BH = bits to clear
  2472.     CL = byte 1
  2473.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  2474. Return: AH = status
  2475.         00h successful
  2476.         80h error
  2477.         FFh error
  2478. SeeAlso: AH=16h"Digiboard",AX=1649h,AX=164Ch
  2479. --------S-14164C-----------------------------
  2480. INT 14 - Digiboard - CCB COMMAND - SET XON/XOFF CHARACTERS
  2481.     AX = 164Ch
  2482.     BL = XON character
  2483.     BH = XOFF character
  2484.     CL = byte 1
  2485.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  2486. Return: AH = status
  2487.         00h successful
  2488.         80h error
  2489.         FFh error
  2490. SeeAlso: AH=16h"Digiboard",AX=164Bh,AX=164Dh
  2491. --------S-14164D-----------------------------
  2492. INT 14 - Digiboard - CCB COMMAND - SET TRANSMIT MID-WATER MARK
  2493.     AX = 164Dh
  2494.     BX = new mid-water mark
  2495.     CL = byte 1
  2496.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  2497. Return: AH = status
  2498.         00h successful
  2499.         80h error
  2500.         FFh error
  2501. SeeAlso: AH=16h"Digiboard",AX=164Ch,AX=164Eh,AX=164Fh
  2502. --------S-14164E-----------------------------
  2503. INT 14 - Digiboard - CCB COMMAND - IRQ POLLING TIMER TO HOST
  2504.     AX = 164Eh
  2505.     BL = ticks
  2506.     BH = ???
  2507.     CL = mode
  2508.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  2509. Return: AH = status
  2510.         00h successful
  2511.         80h error
  2512.         FFh error
  2513. SeeAlso: AH=16h"Digiboard",AX=164Dh
  2514. --------S-14164F-----------------------------
  2515. INT 14 - Digiboard - CCB COMMAND - BUFFER SET ALL
  2516.     AX = 164Fh
  2517.     BL = size
  2518.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  2519. Return: AH = status
  2520.         00h successful
  2521.         80h error
  2522.         FFh error
  2523. SeeAlso: AH=16h"Digiboard",AX=164Dh
  2524. --------S-141653-----------------------------
  2525. INT 14 - Digiboard - CCB COMMAND - SPECIAL CHARACTER INTERRUPT
  2526.     AX = 1653h
  2527.     BL = enable/disable
  2528.     BH = special character
  2529.     CL = byte 1
  2530.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  2531. Return: AH = status
  2532.         00h successful
  2533.         80h error
  2534.         FFh error
  2535. SeeAlso: AH=16h"Digiboard",AX=1646h
  2536. --------S-1417-------------------------------
  2537. INT 14 - FOSSIL - REBOOT SYSTEM
  2538.     AH = 17h
  2539.     AL = method
  2540.         00h = cold boot
  2541.         01h = warm boot
  2542. SeeAlso: INT 19,INT 60/DI=0606h
  2543. --------S-1417-------------------------------
  2544. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - WRITE MODEM CONTROL REGISTER
  2545.     AH = 17h
  2546.     AL = new value for UART's modem control register
  2547.     DX = port number
  2548. Return: nothing
  2549. --------S-1418-------------------------------
  2550. INT 14 - FOSSIL - READ BLOCK
  2551.     AH = 18h
  2552.     CX = maximum number of characters to transfer
  2553.     DX = port number
  2554.     ES:DI -> user buffer
  2555. Return: AX = number of characters transferred
  2556. SeeAlso: AH=19h"FOSSIL",AH=83h"COURIERS",AX=FF02h,INT 6B/AX=0100h
  2557. --------S-1418-------------------------------
  2558. INT 14 - Digiboard DigiCHANNEL PC/X* - SEND BIOS COMMAND
  2559.     AH = 18h
  2560.     ES:BX -> 16-byte command string
  2561.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  2562. Return: AH = status
  2563.         00h successful
  2564.         80h timeout
  2565.     AL = mailbox status
  2566.         00h no errors
  2567.         8Xh BIOS error
  2568.     ES:BX buffer filled in with mailbox string
  2569.     ZF clear if no errors
  2570.     ZF set if either status byte contains an error code
  2571. SeeAlso: AH=16h"Digiboard"
  2572. --------S-1418-------------------------------
  2573. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - GET DRIVER DESCRIPTION
  2574.     AH = 18h
  2575.     DX = port number
  2576. Return: DS:BX -> 40-byte buffer containing a string identifying the serial
  2577.         driver
  2578. SeeAlso: AH=06h"PC-MOS"
  2579. --------S-1419-------------------------------
  2580. INT 14 - FOSSIL - WRITE BLOCK
  2581.     AH = 19h
  2582.     CX = maximum number of characters to transfer
  2583.     DX = port number
  2584.     ES:DI -> user buffer
  2585. Return: AX = number of characters transferred
  2586. SeeAlso: AH=18h"FOSSIL",AH=86h,INT 6B/AX=0000h
  2587. --------S-1419-------------------------------
  2588. INT 14 - Digiboard DigiCHANNEL PC/X* - SPECIAL CHARACTER INTERRUPT
  2589.     AH = 19h
  2590.     BL = flag
  2591.         00h disable special character interrupt
  2592.         FFh enable interrupt
  2593.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  2594. Return: AH = status
  2595.         00h successful
  2596.         FFh failed
  2597. SeeAlso: AH=1Ah"Digiboard"
  2598. --------S-1419-------------------------------
  2599. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - SELECTIVE BUFFER FLUSH
  2600.     AH = 19h
  2601.     AL = what to flush
  2602.         bit 0: input buffer
  2603.         bit 1: output buffer
  2604.     DX = port number
  2605. Return: nothing
  2606. SeeAlso: AH=09h"PC-MOS"
  2607. --------S-141A-------------------------------
  2608. INT 14 - FOSSIL - BREAK BEGIN OR END
  2609.     AH = 1Ah
  2610.     AL = 00h stop sending 'break'
  2611.          01h start sending 'break'
  2612.     DX = port number
  2613. SeeAlso: AH=06h"FOSSIL",AH=8Ah,AH=FAh
  2614. --------S-141A-------------------------------
  2615. INT 14 - Digiboard DigiCHANNEL PC/X - SPECIAL CHARACTER FLAG/COUNTER
  2616.     AH = 1Ah
  2617.     BX = subfunction
  2618.         00h return pointer to special character flag byte
  2619.         01h return pointer to special character counter word
  2620.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  2621. Return: ES:BX -> special character flag or counter
  2622. Notes:    flag is FFh if one or more special characters are in the receive
  2623.       buffer; it is 00h and the counter is invalid if no special characters
  2624.       are in the receive buffer
  2625.     counter (if valid) contains the number of characters in the receive
  2626.       buffer up to and including the last-received special character
  2627. --------S-141B-------------------------------
  2628. INT 14 - FOSSIL - RETURN INFORMATION ABOUT THE DRIVER
  2629.     AH = 1Bh
  2630.     DX = port number
  2631.     CX = size of user buffer
  2632.     ES:DI -> user buffer for driver info (see #0240)
  2633. Return: AX = number of characters transferred
  2634.     CX = 3058h ("0X") (X00 FOSSIL only)
  2635.     DX = 2030h (" 0") (X00 FOSSIL only)
  2636.  
  2637. Format of FOSSIL driver info:
  2638. Offset    Size    Description    (Table 0240)
  2639.  00h    WORD    size of structure in bytes
  2640.  02h    BYTE    FOSSIL spec driver conforms to
  2641.  03h    BYTE    revision level of this specific driver
  2642.  04h    DWORD    pointer to ASCIZ identification string
  2643.  08h    WORD    size of the input buffer
  2644.  0Ah    WORD    number of bytes left in buffer
  2645.  0Ch    WORD    size of the output buffer
  2646.  0Eh    WORD    number of bytes left in buffer
  2647.  10h    BYTE    width of screen
  2648.  11h    BYTE    length of screen
  2649.  12h    BYTE    actual baud rate, computer to modem
  2650. --------S-141C-------------------------------
  2651. INT 14 - X00 FOSSIL - ACTIVATE PORT
  2652.     AH = 1Ch
  2653.     DX = port number
  2654. Return: AX = 1954h if successful
  2655.     BL = maximum function number supported (not including 7Eh and above)
  2656.     BH = revision of FOSSIL specification supported
  2657. Note:    this is a duplicate of AH=04h, so that AH=04h may be made compatible
  2658.       with the PS/2 BIOS in a future release
  2659. SeeAlso: AH=04h"FOSSIL",AH=1Dh
  2660. --------S-141D-------------------------------
  2661. INT 14 - X00 FOSSIL - DEACTIVATE PORT
  2662.     AH = 1Dh
  2663.     DX = port number
  2664. Return: none
  2665. Notes:    this is a duplicate of AH=05h, so that AH=05h may be made compatible
  2666.       with the PS/2 BIOS in a future release
  2667.     ignored if the port was never activated with AH=04h or AH=1Ch
  2668. SeeAlso: AH=05h"FOSSIL",AH=1Ch
  2669. --------S-141E-------------------------------
  2670. INT 14 - X00 FOSSIL - EXTENDED LINE CONTROL INITIALIZATION
  2671.     AH = 1Eh
  2672.     AL = break status
  2673.         00h if break
  2674.         01h if no break
  2675.     BH = parity (see #0241)
  2676.     BL = number of stop bits
  2677.         00h one stop bit
  2678.         01h two stop bits (1.5 if 5 bit word length)
  2679.     CH = word length (see #0242)
  2680.     CL = bps rate (see #0243)
  2681.     DX = port number
  2682. Return: AX = port status code (see #0201,#0202)
  2683. Notes:    this function is intended to exactly emulate the PS/2 BIOS AH=04h call
  2684.     if the port was locked at X00 load time, the appropriate parameters are
  2685.       ignored
  2686. SeeAlso: AH=00h,AH=04h"SERIAL I/O"
  2687.  
  2688. (Table 0241)
  2689. Values for X00 FOSSIL parity:
  2690.  00h    no parity
  2691.  01h    odd parity
  2692.  02h    even parity
  2693.  03h    stick parity odd
  2694.  04h    stick parity even
  2695. SeeAlso: #0204,#0242,#0243
  2696.  
  2697. (Table 0242)
  2698. Values for X00 FOSSIL word length:
  2699.  00h    5 bits
  2700.  01h    6 bits
  2701.  02h    7 bits
  2702.  03h    8 bits
  2703. SeeAlso: #0205,#0241,#0243
  2704.  
  2705. (Table 0243)
  2706. Values for X00 FOSSIL bps rate:
  2707.  00h    110
  2708.  01h    150
  2709.  02h    300
  2710.  03h    600
  2711.  04h    1200
  2712.  05h    2400
  2713.  06h    4800
  2714.  07h    9600
  2715.  08h    19200
  2716. SeeAlso: #0206,#0241,#0242
  2717. --------S-141E------------------------------------
  2718. INT 14 - HUNTER 16 - READ COMMS PARAMETERS
  2719.     AH = 1Eh
  2720.     CX = channel number (00h COM1, 01h COM2, ...)
  2721.     DS:BX -> buffer for communications parameters (see #0244)
  2722. Return: DS:BX buffer filled
  2723. Note:    the Husky Hunter 16 is an 8088-based ruggedized laptop.     Other family
  2724.       members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
  2725. SeeAlso: AH=20h"HUNTER"
  2726.  
  2727. Format of HUNTER 16 communications parameters:
  2728. Offset    Size    Description    (Table 0244)
  2729.  00h    BYTE    communications type (00h IBM, nonzero Husky)
  2730.  01h    BYTE    port number (00h COM1, 01h COM2)
  2731.  02h    BYTE    baud rate (00h 110 bps, 01h 150, 02h 300, 03h 600, 04h 1200,
  2732.           05h 2400, 06h 4800, 07h 9600, 08h 19200, 09h 38400)
  2733.  03h    BYTE    data bits (01h seven, 02h eight)
  2734.  04h    BYTE    parity (00h none, 01h odd, 02h even)
  2735.  05h    BYTE    stop bits (00h one, 01h two)
  2736.  06h    BYTE    handshake (see #0245)
  2737.  07h    BYTE    handshake protocol (00h none, 01h Xon/Xoff, 02h HWK3780)
  2738.  08h    BYTE    Nulls after CR (0-20)
  2739.  09h    BYTE    LF (00h off, 01h on)
  2740.  0Ah    BYTE    Serig. 0..7Fh: Ignore this character
  2741.                80h: Serig off
  2742.  0Bh    BYTE    echo (00h off, 01h on)
  2743.  0Ch    BYTE    transmit timeout in seconds (1-60) or 00h to disable
  2744.  0Dh    BYTE    receive timeout in seconds (1-60) or 00h to disable
  2745.  0Eh  5 BYTEs    reserved
  2746.  
  2747. Bitfields for HUNTER 16 handshake:
  2748. Bit(s)    Description    (Table 0245)
  2749.  0-1    0: RTS off, 1: RTS hold, 2: RTS true
  2750.  2    DTR enabled
  2751.  4    CTS enabled
  2752.  5    DSR enabled
  2753.  6    DCD enabled
  2754. --------S-141F-------------------------------
  2755. INT 14 - X00 FOSSIL - EXTENDED SERIAL PORT STATUS/CONTROL
  2756.     AH = 1Fh
  2757.     AL = 00h read modem control register
  2758.           Return: BL = modem control register (see #0246)
  2759.               AH = status
  2760.     AL = 01h write modem control register
  2761.           BL = modem control register (see #0246)
  2762.           Return: AX = status
  2763.     DX = port number
  2764. Notes:    this function is intended to exactly emulate the PS/2 BIOS AH=05h call
  2765.     X00 forces BL bit 3 set (interrupts cannot be disabled)
  2766. SeeAlso: AH=00h,AH=05h"SERIAL I/O"
  2767.  
  2768. Bitfields for X00 FOSSIL modem control register:
  2769. Bit(s)    Description    (Table 0246)
  2770.  0    data terminal ready
  2771.  1    request to send
  2772.  2    OUT1
  2773.  3    OUT2 (interrupts) enabled
  2774.  4    LOOP
  2775.  5-7    reserved
  2776. --------S-1420-------------------------------
  2777. INT 14 - X00 FOSSIL - DESTRUCTIVE READ WITH NO WAIT
  2778.     AH = 20h
  2779.     DX = port number
  2780. Return: AH = 00h if character was available
  2781.         AL = next character (removed from receive buffer)
  2782.     AX = FFFFh if no character available
  2783. SeeAlso: AH=0Ch,AH=21h"X00"
  2784. --------S-1420-------------------------------
  2785. INT 14 - Alloy MW386 - ATTACH LOGICAL COMMUNICATIONS PORT TO PHYSICAL PORT
  2786.     AH = 20h
  2787.     AL = logical port (01h COM1, 02h COM2)
  2788.     DX = physical port number
  2789. Return: AX = status
  2790.         0000h successful
  2791.         FFFFh failed
  2792. SeeAlso: AH=21h"Alloy",AH=22h"Alloy",AH=23h"Alloy",INT 17/AH=8Bh"Alloy"
  2793. --------S-1420-------------------------------
  2794. INT 14 - MultiDOS Plus - INITIALIZE PORT
  2795.     AH = 20h
  2796.     AL = port parameters (see #0197 at AH=00h"SERIAL")
  2797.     DX = port number (0-3)
  2798. Return: AH = status
  2799.         00h successful
  2800.         41h no such port
  2801.         64h monitor mode already active
  2802. SeeAlso: AH=00h"SERIAL",AH=04h"MultiDOS",AH=21h"MultiDOS",AH=23h"MultiDOS"
  2803. --------S-1420-------------------------------
  2804. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - CHECK OUTPUT QUEUE
  2805.     AH = 20h
  2806.     DX = port number
  2807. Return: AX = number of bytes in output buffer
  2808. SeeAlso: AH=0Ah"PC-MOS"
  2809. --------S-1420------------------------------------
  2810. INT 14 - HUNTER 16 - SELECT COMMS PARAMETERS
  2811.     AH = 20h
  2812.     CX = channel number (00h COM1, 01h COM2, ...)
  2813.     DS:BX -> buffer with communications parameter (see #0244)
  2814. Return: AX = status
  2815.         0000h successful
  2816.         0001h invalid parameter
  2817. SeeAlso: AH=1Eh"HUNTER",AH=21h"HUNTER"
  2818. --------S-1421-------------------------------
  2819. INT 14 - X00 FOSSIL - STUFF RECEIVE BUFFER
  2820.     AH = 21h
  2821.     AL = character
  2822.     DX = port number
  2823. Notes:    the given character is inserted at the end of the receive buffer as if
  2824.       it had just arrived from the serial port; all normal receive
  2825.       processing (XON/XOFF, ^C/^K) is performed on the character
  2826.     fully re-entrant
  2827. SeeAlso: AH=20h"X00"
  2828. --------S-1421-------------------------------
  2829. INT 14 - Alloy MW386 v1.x only - RELEASE PHYSICAL COMMUNICATIONS PORT
  2830.     AH = 21h
  2831.     DX = physical port number
  2832. Return: AX = status
  2833.         0000h successful
  2834.         FFFFh failed
  2835. SeeAlso: AH=20h"Alloy",AH=22h"Alloy"
  2836. --------S-1421-------------------------------
  2837. INT 14 - MultiDOS Plus - TRANSMIT CHARACTER
  2838.     AH = 21h
  2839.     AL = character to send
  2840.     DX = port number
  2841. Return: AH = status (see #0247)
  2842. Note:    monitor mode must have been turned on with AH=24h before calling
  2843. SeeAlso: AH=20h"MultiDOS",AH=22h"MultiDOS",AH=24h"MultiDOS"
  2844.  
  2845. (Table 0247)
  2846. Values for MultiDOS Plus status:
  2847.  00h    successful
  2848.  39h    no DSR or CTS
  2849.  3Ch    no DSR
  2850.  3Bh    no CTS
  2851.  41h    no such port
  2852.  42h    monitor mode not active
  2853.  97h    timed out
  2854. --------S-1421-------------------------------
  2855. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - OUTPUT CHARACTER, WITH TIMEOUT
  2856.     AH = 21h
  2857.     AL = char to send
  2858.     DX = port number
  2859.     SI = timeout in timer ticks (0000h = default)
  2860. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  2861.       operating system by The Software Link, Inc.
  2862. SeeAlso: AH=01h,AH=0Eh"PC/MOS",AH=22h"PC-MOS"
  2863. --------S-1421------------------------------------
  2864. INT 14 - HUNTER 16 - EXTENDED CONTROL
  2865.     AH = 21h
  2866.     AL = command
  2867.         01h force transmission of buffer
  2868.         02h clear transmit buffer
  2869.         03h clear receive buffer
  2870.     DX = port (00h COM1, 01h COM2)
  2871. Return: AH = extended status
  2872. Desc:    executes the command on the selected port
  2873. SeeAlso: AH=1Eh"HUNTER",AH=20h"HUNTER",AH=22h"HUNTER",AH=24h"HUNTER"
  2874. --------S-1422-------------------------------
  2875. INT 14 - Alloy MW386 v2+ - RELEASE LOGICAL COMMUNICATIONS PORT
  2876.     AH = 22h
  2877.     AL = logical port (01h COM1, 02h COM2)
  2878. Return: AX = status (0000h successful)
  2879. SeeAlso: AH=20h"Alloy",AH=21h"Alloy"
  2880. --------S-1422-------------------------------
  2881. INT 14 - MultiDOS Plus - RECEIVE CHARACTER
  2882.     AH = 22h
  2883.     DX = port number
  2884. Return: AH = status (see also AH=21h"MultiDOS")
  2885.         00h successful
  2886.         AL = character
  2887.         3Dh framing and parity error
  2888.         3Eh overrun error
  2889.         3Fh framing error
  2890.         40h parity error
  2891.         96h ring buffer overflow
  2892. Note:    if no character is available, this function waits until a character
  2893.       arrives or an implementation-dependent timeout elapses
  2894. SeeAlso: AH=20h"MultiDOS",AH=21h"MultiDOS",AH=27h
  2895. --------S-1422-------------------------------
  2896. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - RECEIVE CHARACTER, WITH TIMEOUT
  2897.     AH = 22h
  2898.     DX = port number
  2899.     SI = timeout in timer ticks (0000h = default)
  2900. Return: AH = port status (see also #0201 at AH=03h)
  2901.          bit 7 = 1 indicates time-out
  2902.     AL = character received
  2903. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  2904.       operating system by The Software Link, Inc.
  2905. SeeAlso: AH=02h,AH=0Fh"PC-MOS",AH=21h"PC-MOS"
  2906. --------S-1422------------------------------------
  2907. INT 14 - HUNTER 16 - EXTENDED STATUS
  2908.     AH = 22h
  2909.     DX = port (00h COM1, 01h COM2)
  2910. Return: AH = extended status
  2911.     BX = number of characters in input buffer
  2912.     CX = number of characters in output buffer
  2913. Desc:    returns the most recent Extended Status code for the port
  2914. SeeAlso: AH=21h"HUNTER"
  2915. --------S-1423-------------------------------
  2916. INT 14 - Alloy MW386 v2+ - GET PORT NUMBER FROM LOGICAL PORT ID
  2917.     AH = 23h
  2918.     AL = logical port (01h COM1, 02h COM2)
  2919.     DH = user ID
  2920.     DL = process ID (DH,DL both FFh for current task)
  2921. Return: AL = MW386 port mode (see #0248)
  2922.     CX = MW386 port number
  2923.     DH = owner's user ID
  2924.     DL = owner's task ID
  2925. SeeAlso: AH=20h"Alloy",INT 17/AH=8Bh"Alloy"
  2926.  
  2927. Bitfields for MW386 port mode:
  2928. Bit(s)    Description    (Table 0248)
  2929.  0    port is shared (spooler only)
  2930.  1    port is spooled instead of direct (spooler only)
  2931.  2    port is assigned as logical COM device, not in spooler
  2932.  3    port is free
  2933. --------S-1423-------------------------------
  2934. INT 14 - MultiDOS Plus - GET PORT STATUS
  2935.     AH = 23h
  2936.     DX = port number
  2937. Return: AH = line status (see #0201 at AH=03h)
  2938.     AL = modem status (see #0202 at AH=03h)
  2939. SeeAlso: AH=03h,AH=07h"MultiDOS",AH=20h"MultiDOS"
  2940. --------S-1423-------------------------------
  2941. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - DECLARE PORT OWNERSHIP
  2942.     AH = 23h
  2943.     DX = port number
  2944.     BX = TCB segment/selector address of owner task
  2945. Return: nothing
  2946. SeeAlso: AH=0Dh"PC-MOS"
  2947. --------S-1423------------------------------------
  2948. INT 14 - HUNTER 16 - CONTROL HANDSHAKE LINES
  2949.     AH = 23h
  2950.     BH = handshake line to set (00h RTS, 01h DTR)
  2951.     BL = new level (00h low, 01h high)
  2952. Desc:    sets the handshake lines of COM1 to the desired level
  2953. SeeAlso: AH=21h"HUNTER",AH=24h"HUNTER"
  2954. --------S-1424-------------------------------
  2955. INT 14 - Alloy MW386 v2+ - CHANGE PHYSICAL PORT PARAMETERS
  2956.     AH = 24h
  2957.     CX = physical I/O port number
  2958.     DS:DX -> configuration table (see #0249)
  2959. Return: AH = 00h
  2960. Note:    invalid port numbers are merely ignored
  2961. SeeAlso: INT 17/AH=96h
  2962.  
  2963. Format of Alloy MW386 configuration table:
  2964. Offset    Size    Description    (Table 0249)
  2965.  00h    BYTE    baud rate (see #0250)
  2966.  01h    BYTE    data bits (00h=5, 01h=6, 02h=7, 03h=8)
  2967.  02h    BYTE    parity (00h none, 01h odd, 02h even)
  2968.  03h    BYTE    stop bits (00h=1, 01h=2)
  2969.  04h    BYTE    receive flow control
  2970.         00h none, 01h XON/XOFF, 02h DTR/DSR, 03h XPC, 04h RTS/CTS
  2971.  05h    BYTE    transmit flow control (as for receive)
  2972.  
  2973. (Table 0250)
  2974. Values for Alloy MW386 baud rate:
  2975.  00h    38400
  2976.  01h    19200
  2977.  02h    9600
  2978.  03h    7200
  2979.  04h    4800
  2980.  05h    3600
  2981.  06h    2400
  2982.  07h    2000
  2983.  08h    1200
  2984.  09h    600
  2985.  0Ah    300
  2986.  0Bh    150
  2987.  0Ch    134.5
  2988. SeeAlso: #0206
  2989. --------S-1424-------------------------------
  2990. INT 14 - MultiDOS Plus - SET MONITOR MODE
  2991.     AH = 24h
  2992.     AL = port status storage
  2993.         00h single status for entire receive buffer
  2994.         01h separate status kept for each byte in receive buffer
  2995.     DX = port number
  2996. Return: AH = status
  2997.         00h successful
  2998.         3Ah invalid status storage specified
  2999.         41h no such port
  3000.         64h monitor mode already active
  3001. Note:    in monitor mode, MultiDOS redirects all BIOS video output to a serial
  3002.       port
  3003. SeeAlso: AH=20h"MultiDOS",AH=25h
  3004. --------S-1424-------------------------------
  3005. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - ???
  3006.     AH = 24h
  3007. Return: ???
  3008. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  3009.       operating system by The Software Link, Inc.
  3010. --------S-1424------------------------------------
  3011. INT 14 - HUNTER 16 - CONTROL CTS HANDSHAKING
  3012.     AH = 24h
  3013.     AL = new CTS handshake state for COM1 (00h disabled, 01h enabled)
  3014. SeeAlso: AH=23h"HUNTER",AH=25h"HUNTER",AH=26h"HUNTER"
  3015. --------S-1425-------------------------------
  3016. INT 14 - MultiDOS Plus - CLEAR BUFFERS
  3017.     AH = 25h
  3018.     AL = function
  3019.         00h only clear buffers
  3020.         01h clear buffers and deactivate
  3021.     DX = port number
  3022. Return: AH = status
  3023.         00h successful
  3024.         3Ah invalid function
  3025.         41h no such port
  3026.         42h monitor mode not active
  3027. SeeAlso: AH=20h"MultiDOS",AH=24h"MultiDOS"
  3028. --------S-1425------------------------------------
  3029. INT 14 - HUNTER 16 - CONTROL RS232 DRIVERS
  3030.     AH = 25h
  3031.     AL = new state of RS232 drivers (00h off, 01h on)
  3032. Note:    this function can be used to save power by turning off the RS232 
  3033.       drivers.  It can also be used to turn on the RS232 drivers before
  3034.       connecting to a remote system to avoid "garbage" while the drivers
  3035.       turn on.
  3036. SeeAlso: AH=23h"HUNTER",AH=24h"HUNTER",AH=26h"HUNTER"
  3037. --------S-1426------------------------------------
  3038. INT 14 - HUNTER 16 - CONTROL RI POWER UP
  3039.     AH = 26h
  3040.     AL = 00h enable RI power up
  3041.         else disable RI power up
  3042. Desc:    control whether the Ring Indicator handshake can power up the Hunter
  3043. --------S-1427-------------------------------
  3044. INT 14 - MultiDOS Plus - GET BUFFER CHARACTER COUNT
  3045.     AH = 27h
  3046.     DX = port number
  3047. Return: AH = status
  3048.         00h successful
  3049.         41h no such port
  3050.         42h monitor mode not active
  3051.     AL = number of characters in receive buffer
  3052. --------S-1427------------------------------------
  3053. INT 14 - HUNTER 16 - GET INSTALLED PROTOCOLS COUNT
  3054.     AH = 27h
  3055.     AL = number of extended protocols installed (since last call)
  3056. Return: AL = total number installed, including new ones
  3057. Desc:    Returns the number of extended communication protocols installed
  3058. SeeAlso: AH=25h"HUNTER",AH=28h"HUNTER"
  3059. --------S-1428------------------------------------
  3060. INT 14 - HUNTER 16 - GET PROTOCOL NAME
  3061.     AH = 28h
  3062.     AL = protocol handle
  3063.     DS:BX -> 8 character buffer for protocol name
  3064. Return:    AH = status
  3065.         00h successful
  3066.         DS:BX buffer filled with the protocol name
  3067.         FFh failed
  3068. SeeAlso: AH=27h"HUNTER",AH=29h"HUNTER"
  3069. --------S-1429------------------------------------
  3070. INT 14 - HUNTER 16 - GET PROTOCOL HANDLE
  3071.     AH = 29h
  3072.     DS:BX -> buffer containing the protocol name
  3073. Return: AH = status 
  3074.         00h successful
  3075.         AL = handle
  3076.         FFh failed
  3077. SeeAlso: AH=28h"HUNTER",AH=2Ah"HUNTER"
  3078. --------S-142A------------------------------------
  3079. INT 14 - HUNTER 16 - EXTENDED PROTOCOL MENU
  3080.     AH = 2Ah
  3081.     AL = protocol handle
  3082. Return: AH = status
  3083.         00h successful
  3084.         FFh failed
  3085.     AL = menu handle
  3086. SeeAlso: AH=29h"HUNTER",AH=2Bh"HUNTER"
  3087. --------S-142B------------------------------------
  3088. INT 14 - HUNTER 16 - GET EXTENDED PROTOCOL PARAMETERS
  3089.     AH = 2Bh
  3090.     AL = protocol handle
  3091.     DS:BX -> buffer for extended protocol parameters
  3092. Return: AH = status    
  3093.         00h successful
  3094.         DS:BX buffer filled with extended parameters
  3095.         FFh failed
  3096. SeeAlso: AH=2Ah"HUNTER"
  3097. --------S-142C00----------------------------------
  3098. INT 14 - HUNTER 16 - GET DTR
  3099.     AX = 2C00h
  3100. Return: AH = 00h
  3101.     BL = current state
  3102.         00h     normal DTR operation
  3103.         else DTR is forced high
  3104. Desc:    Indicates whether the DTR signal on COM1 is forced high
  3105. Note:    the Husky Hunter 16 is an 8088-based ruggedized laptop.     Other family
  3106.       members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
  3107. SeeAlso: AH=2Ch"SET DTR"
  3108. --------S-142C------------------------------------
  3109. INT 14 - HUNTER 16 - SET DTR
  3110.     AH = 2Ch
  3111.     AL nonzero
  3112.     BL = new state
  3113.         00h     normal operation
  3114.         else force DTR high
  3115. Return: AH = 00h
  3116. Desc:    determine whether the DTR signal on COM1 should be forced high
  3117. SeeAlso: AX=2C00h
  3118. ----------1436-------------------------------
  3119. INT 14 - ComShare - INSTALLATION CHECK
  3120.     AH = 36h
  3121. Return: AX = 4353h ('CS') if installed
  3122.         BX = bitmap of installed ports (bit 0: COM1 is gateway, etc.)
  3123.         CX reserved for future use
  3124.         WORD DX:[0100h] = ComShare version number
  3125. Program: The ComShare System is a modem-sharing program for NetBIOS and
  3126.       NetWare-based networks by NashaKala Corporation
  3127. Note:    ComShare supports the standard BIOS INT 14h calls with a slight
  3128.       change in the interpretation of speed values (see #0206 at AH=04h)
  3129. SeeAlso: AH=00h,AH=04h,AX=F4FFh
  3130. --------S-1456-------------------------------
  3131. INT 14 U - BWCOM14 - INSTALLATION CHECK
  3132.     AH = 56h
  3133. Return: CX = 0001h if installed
  3134. Program: BWCOM14 is a network serial port emulator (simulating a Hayes modem
  3135.       connected to the serial port) distributed as part of the
  3136.       Beame&Whiteside BW-NFS package
  3137. SeeAlso: AH=57h,AH=58h,INT 2F/AX=DF00h/BX=5445h
  3138. --------S-1457-------------------------------
  3139. INT 14 U - BWCOM14 - INITIALIZE
  3140.     AH = 57h
  3141.     DL = port number
  3142. Return: AL = initialization status (00h successful, 01h already initialized)
  3143.     CX = port status (0001h port redirected, 0002h and FFFFh failed)
  3144. Note:    after this call, all invocations of INT 14/AH=00h-03h for the specified
  3145.       port will be handled by BWCOM14 until AH=58h is called
  3146. SeeAlso: AH=00h"SERIAL",AH=56h,AH=58h
  3147. --------S-1458-------------------------------
  3148. INT 14 U - BWCOM14 - SHUTDOWN
  3149.     AH = 58h
  3150. Return: CX = status (0001h successful, 0002h not initialized)
  3151. Note:    after this call, BWCOM14 will no longer redirect the COM port
  3152. SeeAlso: AH=56h,AH=57h
  3153. --------N-146F--BXFFFE-----------------------
  3154. INT 14 U - Connection Manager - ???
  3155.     AH = 6Fh
  3156.     BX = FFFEh
  3157.     ???
  3158. Return: ???
  3159. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  3160.       serial ports over an IPX or NetBIOS-based network
  3161. --------N-146F--BXFFFF-----------------------
  3162. INT 14 - Connection Manager - INSTALLATION CHECK
  3163.     AH = 6Fh
  3164.     BX = FFFFh
  3165. Return: DX:BX -> Connection Manager Communication Table if installed
  3166.     BX = FFFFh if not installed
  3167. SeeAlso: AH=0Dh/DX=FFFFh
  3168. --------S-146F00-----------------------------
  3169. INT 14 - HP Vectra EX-BIOS - "F14_INQUIRE" - INSTALLATION CHECK
  3170.     AX = 6F00h
  3171.     BX <> 4850h (usually set to 0000h for simplicity)
  3172. Return: BX = 4850h ("HP") if HP Extended BIOS serial port extensions available
  3173.     AX destroyed
  3174. Note:    supported by original HP Vectra AT and by ES/QS/RS series Vectras
  3175. SeeAlso: AX=6F01h,AX=6F02h,AX=6F03h,AX=6F04h,INT 10/AX=6F00h,INT 14/AX=6F00h
  3176. SeeAlso: INT 17/AX=6F00h,INT 33/AX=6F00h
  3177. --------S-146F01-----------------------------
  3178. INT 14 - HP Vectra EX-BIOS - "F14_EXINIT" - INITIALIZE SERIAL PORT
  3179.     AX = 6F01h
  3180.     BX = port attributes (see #0251)
  3181.     DX = port number (0-3)
  3182. Return: AH = line status (see #0201)
  3183.     AL = modem status (see #0202)
  3184. Note:    supported by original HP Vectra AT and by ES/QS/RS series Vectras
  3185. SeeAlso: AX=6F00h
  3186.  
  3187. Bitfields for HP Vectra Extended BIOS serial port attributes:
  3188. Bit(s)    Description    (Table 0251)
  3189.  8-5    data rate (110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200)
  3190.  4-3    parity
  3191.     00 none
  3192.     01 odd
  3193.     10 none
  3194.     11 even
  3195.  2    stop bits (0 = one, 1 = two)
  3196.  1-0    bits per character
  3197.     10 seven-bit characters
  3198.     11 eight-bit characters
  3199.     0x undefined
  3200. --------S-146F02-----------------------------
  3201. INT 14 - HP Vectra EX-BIOS - "F14_PUT_BUFFER" - TRANSMIT BUFFER
  3202.     AX = 6F02h
  3203.     CX = number of characters in buffer
  3204.     DX = port number (0-3)
  3205.     ES:DI -> buffer containing characters
  3206. Return: AH = line status (see #0201)
  3207.     AL = modem status (see #0202)
  3208.     CX = number of bytes actually sent
  3209.     ES:DI -> next byte to be transferred (unchanged if all bytes sent)
  3210. Desc:    send characters from the specified buffer until all characters have
  3211.       been sent or an error/timeout is encountered
  3212. Note:    supported by original HP Vectra AT and by ES/QS/RS series Vectras
  3213. SeeAlso: AX=6F00h,AX=6F03h,AX=6F04h,INT 17/AX=6F02h
  3214. --------S-146F03-----------------------------
  3215. INT 14 - HP Vectra EX-BIOS - "F14_GET_BUFFER" - READ DATA INTO BUFFER
  3216.     AX = 6F03h
  3217.     CX = size of buffer
  3218.     DX = port number (0-3)
  3219.     ES:DI -> buffer for received characters
  3220. Return: AH = line status (see #0201)
  3221.     ---on error (AH bit 7 set)---
  3222.        AL = 00h
  3223.        ES:DI -> next byte to be transferred
  3224.     ---if successful---
  3225.        AL = last byte read
  3226.        ES:DI unchanged
  3227.     CX = number of bytes read
  3228. Desc:    read characters into the specified buffer until the buffer is filled
  3229.       or a timeout occurs
  3230. Notes:    supported by original HP Vectra AT and by ES/QS/RS series Vectras
  3231.     polls the Data Set Ready modem status and Data Ready line status bits
  3232.       to determine when characters are available
  3233. SeeAlso: AX=6F00h,AX=6F02h,AX=6F04h
  3234. --------S-146F04-----------------------------
  3235. INT 14 - HP Vectra EX-BIOS - "F14_TRM_BUFFER" - READ UNTIL TERMINATOR
  3236.     AX = 6F04h
  3237.     BL = lowest termination character
  3238.     BH = highest termination character
  3239.     CX = size of buffer
  3240.     DX = port number (0-3)
  3241.     ES:DI -> buffer for received characters
  3242. Return: AH = line status (see #0201)
  3243.     ---on error (AH bit 7 set)---
  3244.        AL = 00h
  3245.        ES:DI -> next byte to be transferred
  3246.     ---if successful---
  3247.        AL = last byte read
  3248.        ES:DI unchanged
  3249.     CX = number of bytes read
  3250. Desc:    read characters into the specified buffer until the buffer is filled,
  3251.       a character in the specified range is received, or a timeout occurs
  3252. Notes:    supported by original HP Vectra AT and by ES/QS/RS series Vectras
  3253.     polls the Data Set Ready modem status and Data Ready line status bits
  3254.       to determine when characters are available
  3255. SeeAlso: AX=6F00h,AX=6F02h,AX=6F03h
  3256. --------S-147E-------------------------------
  3257. INT 14 - FOSSIL - INSTALL AN EXTERNAL APPLICATION FUNCTION
  3258.     AH = 7Eh
  3259.     AL = code assigned to external application (80h-BFh)
  3260.         80h reserved for communications FOSSIL
  3261.         81h video FOSSIL
  3262.         82h reserved for keyboard FOSSIL
  3263.         83h reserved for system FOSSIL
  3264.     ES:DX -> entry point
  3265. Return: AX = 1954h
  3266.     BL = code assigned to application (same as input AL)
  3267.     DH = 00h failed
  3268.          01h successful
  3269. SeeAlso: AH=7Fh,AH=80h"FOSSIL",AX=8100h,AH=82h"FOSSIL",AH=83h"FOSSIL"
  3270. --------S-147F-------------------------------
  3271. INT 14 - FOSSIL - REMOVE AN EXTERNAL APPLICATION FUNCTION
  3272.     AH = 7Fh
  3273.     AL = code assigned to external application
  3274.     ES:DX -> entry point
  3275. Return: AX = 1954h
  3276.     BL = code assigned to application (same as input AL)
  3277.     DH = 00h failed
  3278.          01h successful
  3279. SeeAlso: AH=7Eh
  3280. --------S-1480-------------------------------
  3281. INT 14 - COMMUNICATIONS FOSSIL
  3282.     AH = 80h
  3283. SeeAlso: AH=7Eh
  3284. --------S-1480-------------------------------
  3285. INT 14 - COURIERS.COM - INSTALLATION CHECK
  3286.     AH = 80h
  3287. Return: AH = E8h if loaded
  3288. Program: COURIERS is a TSR utility by PC Magazine
  3289. --------S-148000-----------------------------
  3290. INT 14 - ARTICOM - INSTALLATION CHECK
  3291.     AX = 8000h
  3292. Return: AL = FFh if installed
  3293.         BH = major version
  3294.         BL = minor version
  3295. Program: ArtiCom is an asynchronous communications driver by Artisoft which
  3296.       works on top of NetBIOS and allows modem/serial-port sharing by
  3297.       programs using INT 14 for serial I/O.
  3298. Note:    ArtiCom supports 32 simultaneous COM ports using multiport cards and
  3299.       drivers
  3300. SeeAlso: AH=00h,AH=01h,AH=02h,AH=03h,AH=04h,AH=05h,AX=8001h,AX=8002h
  3301. --------S-148000-----------------------------
  3302. INT 14 - COMM-DRV v14.0 - READ PORT METRICS - GET ERROR CODE AND BUFFER STATUS
  3303.     AX = 8000h
  3304.     DX = port number
  3305. Return: AX = code for last error (see #0252)
  3306.     BX = number of characters in output buffer
  3307.     CX = nubmer of characters in input buffer
  3308.     DX = state flag (see #0253)
  3309. Program: COMM-DRV is a universal serial communications driver by Willies'
  3310.       Computer Software Company, which supports standard INT 14 and
  3311.       FOSSIL calls as well as its own interfaces
  3312. SeeAlso: AX=8001h"COMM-DRV",AX=8002h"COMM-DRV",AX=8003h"COMM-DRV"
  3313.  
  3314. (Table 0252)
  3315. Values for COMM-DRV error code:
  3316.  00h    no error
  3317.  01h    buffer not set or attempted to change buffer for active port
  3318.  02h    port not active
  3319.  03h    transmit buffer full
  3320.  04h    receive buffer full
  3321.  05h    syntax error
  3322.  06h    invalid buffer size
  3323.  07h    invalid port
  3324.  08h    handler changed
  3325.  09h    invalid baud rate
  3326.  0Ah    invalid parity setting
  3327.  0Bh    invalid data length
  3328.  0Ch    invalid number of stop bits
  3329.  0Dh    invalid protocol number
  3330.  0Eh    IRQ changed
  3331.  0Fh    port changged
  3332.  10h    invalid threshold setting
  3333.  11h    invalid IRQ number
  3334.  12h    interrupts not enabled
  3335.  13h    invalid break syntax
  3336.  14h    fatal error
  3337.  15h    CTS error
  3338.  16h    invalid RS232 I/O port address
  3339.  17h    environment variable not set
  3340.  18h    error on IOCTL call
  3341.  19h    error during atexit cleanup
  3342.  1Ah    error mapping for direct calls
  3343.  1Bh    error opening device
  3344.  1Ch    unable to allocate memory
  3345.  1Dh    error on external micro card
  3346.  1Eh    card changed error
  3347.  1Fh    card type error
  3348.  20h    not supported
  3349.  21h    parent port error
  3350.  22h    card command buffer full
  3351.  23h    no subdevice for this port
  3352.  24h    unknown error
  3353.  25h    external card busy
  3354.  26h    no more timers available
  3355.  27h    INT 14 vector changed
  3356.  28h    INT 08 vector changed
  3357.  29h    DPMI error
  3358.  2Ah    TSR buffer too small (or nonexistent)
  3359.  2Bh    out of asynchronous resources
  3360.  2Ch    out of timer resources
  3361.  2Dh    out of "other" timer resources
  3362.  2Eh    file I/O error
  3363.  2Fh    hardware memory > 64K
  3364.  
  3365. Bitfields for state flag :
  3366. Bit(s)    Description    (Table 0253)
  3367.  0    port is active
  3368.  1    output throttled (XOFF received, or DSR or CTS reset)
  3369.  2    input throttled (XOFF sent, or DTR or RTS reset)
  3370. --------S-148001-----------------------------
  3371. INT 14 - ARTICOM - UNLOAD ASYNCHRONOUS REDIRECTOR FROM MEMORY
  3372.     AX = 8001h
  3373. Return: AX = error code, if error (see #0255)
  3374. SeeAlso: AX=8000h"ARTICOM",AX=8002h"ARTICOM",AX=8003h"ARTICOM"
  3375. Index:    uninstall;ARTICOM
  3376. --------S-148001-----------------------------
  3377. INT 14 - COMM-DRV v14.0 - READ PORT METRICS - GET PORT PARAMETERS
  3378.     AX = 8001h
  3379.     DX = port number
  3380. Return: BX:DI -> Port Control Block (see #0262)
  3381. SeeAlso: AX=8000h"COMM-DRV",AX=8002h"COMM-DRV",AX=8003h"COMM-DRV"
  3382. --------S-148002-----------------------------
  3383. INT 14 - ARTICOM - GET ASYNCHRONOUS REDIRECTOR STATUS
  3384.     AX = 8002h
  3385.     ES:DI -> buffer for redirector status structure (see #0254)
  3386. Return: AX = error code, if error (see #0255)
  3387. SeeAlso: AX=8000h"ARTICOM",AX=8003h"ARTICOM"
  3388.  
  3389. Format of ARTICOM redirector status:
  3390. Offset    Size    Description    (Table 0254)
  3391.  00h    WORD    redirector major and minor version numbers
  3392.  02h    WORD    redirectable ports found
  3393.  04h    WORD    redirectable ports + local ports found
  3394.  06h    WORD    redirector internal buffer size
  3395.  08h    WORD    maximum servers maintained
  3396.  0Ah    WORD    number of adapters found
  3397. --------S-148002-----------------------------
  3398. INT 14 - COMM-DRV v14.0 - READ PORT METRICS - GET PORT PARAMETERS
  3399.     AX = 8002h
  3400.     DX = port number
  3401. Return: AH bit 7 set on error
  3402.     AH bit 7 clear if successful
  3403.         BX:DI -> Port Control Block (see #0262) (modifyable portion only)
  3404. SeeAlso: AX=8000h"COMM-DRV",AX=8001h"COMM-DRV",AX=8003h"COMM-DRV"
  3405. --------S-148003-----------------------------
  3406. INT 14 - ARTICOM - TRANSLATE ERROR CODE TO ERROR STRING
  3407.     AX = 8003h
  3408.     CX = error number to translate (see #0255)
  3409. Return: ES:DI -> ASCIZ error text or 0000h:0000h if unable to translate
  3410. SeeAlso: AX=8000h
  3411.  
  3412. (Table 0255)
  3413. Values for ARTICOM error codes:
  3414.  00h    "No error"
  3415.  01h    "An invalid port number was specified"
  3416.  02h    "Port is already redirected"
  3417.  03h    "Too many ports redirected"
  3418.  04h    "Cannot locate the server"
  3419.  05h    "Server is busy"
  3420.  06h    "Access denied"
  3421.  07h    "Resource in use"
  3422.  08h    "Resource in use - request queued"
  3423.  09h    "No such resource"
  3424.  0Ah    "Invalid username/password pair"
  3425.  0Bh    "Noncompatible version number"
  3426.  0Ch    "Can't remove from memory"
  3427.  0Dh    "Bad NETBIOS adapter number"
  3428.  0Eh    "No more entries in list"
  3429.  0Fh    "Resource is not available at this time"
  3430.  10h    "Invalid value to INT 14 call"
  3431. --------S-148003-----------------------------
  3432. INT 14 - COMM-DRV v14.0 - READ PORT METRICS - GET I/O BUFFER SIZES
  3433.     AX = 8003h
  3434.     DX = port number
  3435. Return: AX = number of characters in input buffer
  3436.     BX = input buffer size
  3437.     CX = number of characters in output buffer
  3438.     DX = output buffer size
  3439. SeeAlso: AX=8000h"COMM-DRV",AX=8001h"COMM-DRV",AX=8002h"COMM-DRV"
  3440. --------S-148004-----------------------------
  3441. INT 14 - ARTICOM - ATTACH ASYNCHRONOUS RESOURCE
  3442.     AX = 8004h
  3443.     DX = port to redirect (COM1=0, COM2=1, ...)
  3444.     CH = attach type
  3445.     CL = adapter to use for attach, 0FFh to search all
  3446.     ES:DI -> attachment structure (see #0256)
  3447. Return: AX = error code, if error (see #0255)
  3448. Note:    The wildcard '*' is supported in the server and resource fields.  If
  3449.       wild cards are used then the first matching available server is
  3450.       attached.
  3451. SeeAlso: AX=8000h,AX=8003h,AX=8005h
  3452.  
  3453. Format of ARTICOM attachment structure:
  3454. Offset    Size    Description    (Table 0256)
  3455.  00h 16 BYTEs    server to look for attach
  3456.  10h 16 BYTEs    attach to resource name
  3457.  20h 16 BYTEs    username for attach
  3458.  30h 16 BYTEs    password for username or resource
  3459.  40h    BYTE    attach type
  3460.         00h normal
  3461.         01h queue if resource is in use (not yet supported in v1.00)
  3462. --------S-148005-----------------------------
  3463. INT 14 - ARTICOM - DETACH ASYNCHRONOUS RESOURCE
  3464.     AX = 8005h
  3465.     DX = port to detach (COM1=0, COM2=1, ...)
  3466. Return: AX = error code, if error (see #0255)
  3467. Note:    only a previously attached resource can be detached
  3468. SeeAlso: AX=8000h,AX=8003h,AX=8004h
  3469. --------S-148006-----------------------------
  3470. INT 14 - ARTICOM - GET RESOURCE INFORMATION
  3471.     AX = 8006h
  3472.     BX = remote port (COM1=0, COM2=1, ...)
  3473.     CL = adapter number, FFh to try all adapters
  3474.     ES:DI -> resource information structure (see #0257)
  3475.     DS:SI -> 16 byte server name. See note.
  3476. Return: AX = error code, if error (see #0255)
  3477.     BX = next remote port, recall to get next resource info
  3478. Note:    Wild cards supported in both the resource field and server name
  3479.       string DS:SI. If wild cards used then first matching available
  3480.       resource information is searched. Set the resource field to FFh to
  3481.       return all resources.
  3482. SeeAlso: AX=8000h,AX=8002h,AX=8003h,AX=8007h
  3483.  
  3484. Format of ARTICOM resource information structure:
  3485. Offset    Size    Description    (Table 0257)
  3486.  00h    BYTE    00h = free, else used
  3487.  01h 16 BYTEs    resource name
  3488.  11h 16 BYTEs    username of resource user
  3489.  21h    WORD    amount of time used
  3490.  23h    WORD    amount of time remaining
  3491.  53h 48 BYTEs    description of resource
  3492.  93h 64 BYTEs    initialization string for modem
  3493.  B3h 32 BYTEs    dial string for modem
  3494.  D3h 32 BYTEs    hang-up string for modem
  3495. --------S-148007-----------------------------
  3496. INT 14 - ARTICOM - GET REDIRECTED PORT INFORMATION
  3497.     AX = 8007h
  3498.     DX = port index (COM1=0, COM2=1, ...)
  3499.     ES:DI -> buffer for port information structure (see #0258)
  3500. Return: CF clear if redirection info returned and port is redirected
  3501.     CF set if not a redirected port
  3502.     AX = error code, if error (see #0255)
  3503. SeeAlso: AX=8000h,AX=8003h,AX=8006h,AX=8008h
  3504.  
  3505. Format of ARTICOM port information structure:
  3506. Offset    Size    Description    (Table 0258)
  3507.  00h 16 BYTEs    server name resource is on
  3508.  10h    BYTE    adapter number server is on
  3509.  11h 16 BYTEs    resource name
  3510.  21h    WORD    remote port index, use to get additional information
  3511.  23h    WORD    buffer size
  3512.  25h    WORD    baud rate (see #0259)
  3513.  26h    BYTE    modem status register
  3514.  27h    BYTE    modem control register
  3515.  28h    BYTE    line status register
  3516.  29h    BYTE    line control register
  3517.  2Ah    BYTE    flow control in use: 0 - NONE, 1 - XON/XOFF, 2 - RTS/CTS
  3518.  2Bh    WORD    send timeout in ticks
  3519.  2Dh    WORD    receive timeout in ticks
  3520.  2Fh    WORD    time used on remote port
  3521.  31h    WORD    time left before timeout
  3522.  33h    BYTE    if server changes allowed?
  3523.  34h    WORD    FFFFh (-1) if connection ok, else old port index
  3524.  
  3525. (Table 0259)
  3526. Values for ARTICOM baud rate:
  3527.  00h    110
  3528.  01h    150
  3529.  02h    300
  3530.  03h    600
  3531.  04h    1200
  3532.  05h    2400
  3533.  06h    4800
  3534.  07h    9600
  3535.  08h    19200
  3536.  09h    38400
  3537.  0Ah    57600
  3538.  0Bh    115200
  3539.  0Ch    134.5
  3540.  0Dh    1800
  3541.  0Eh    2000
  3542.  0Fh    3600
  3543.  10h    7200
  3544. SeeAlso: #0206
  3545. --------S-148008-----------------------------
  3546. INT 14 - ARTICOM - GET AVAILABLE SERVER NAME
  3547.     AX = 8008h
  3548.     BX = server index (0,1,...)
  3549.     ES:DI -> server name structure (see #0260)
  3550. Return: AX = error code, if error (see #0255)
  3551.     BX = next remote port, repeat call to get next available server
  3552. Note:    the wildcard '*' is supported in the server name field.     Set the
  3553.       server name to FFh to search for all servers.
  3554. SeeAlso: AX=8000h,AX=8003h,AX=8007h
  3555.  
  3556. Format of ARTICOM server name structure:
  3557. Offset     Size      Description    (Table 0260)
  3558.   00h 16 BYTEs      (call) ASCIZ server name
  3559.   10h     BYTE      (ret) the adapter server is found
  3560. --------S-148009-----------------------------
  3561. INT 14 - ARTICOM - SET SEND AND RECEIVE TIMEOUTS
  3562.     AX = 8009h
  3563.     BX = send timeout in ticks
  3564.     CX = receive timeout in ticks
  3565.     DX = port index (COM1=0, COM2=1, ...)
  3566. Return: nothing
  3567. SeeAlso: AX=8000h,AX=800Ah
  3568. --------S-14800A-----------------------------
  3569. INT 14 - ARTICOM - MODIFY FLOW CONTROL
  3570.     AX = 800Ah
  3571.     BL = flow control type (00h none, 01h XON/XOFF, 02h RTS/CTS)
  3572.     DX = port index (COM1=0, COM2=1, ...)
  3573. Return: AX = error code, if error (see #0255)
  3574. Note:    for attached ports only!
  3575. SeeAlso: AX=8000h,AX=8003h,AX=8009h
  3576. --------S-148025-----------------------------
  3577. INT 14 - ARTICOM - SET INTERNAL SEND/RECEIVE VECTOR
  3578.     AX = 8025h
  3579.     DS:DX -> address of trap function (see #0261) to call on read/write
  3580. Note:    setting the vector to a user function allows the redirector's activity
  3581.       to be monitored.
  3582. SeeAlso: AX=8000h,AX=8035h,INT 21/AH=25h
  3583.  
  3584. (Table 0261)
  3585. Values ARTICOM trap function is called with:
  3586.     AH = operation
  3587.         80h reading character
  3588.         81h writing character
  3589.     AL = character
  3590. Return: AX must be preserved
  3591.     far JUMP to old trap function (see AX=8035h)
  3592. --------S-148035-----------------------------
  3593. INT 14 - ARTICOM - GET INTERNAL SEND/RECEIVE VECTOR
  3594.     AX = 8035h
  3595. Return: ES:BX -> address of current send/receive routine
  3596. Note:    this function returns the address of the routine which is called
  3597.       inside A-REDIR.EXE each time a character is received or sent on the
  3598.       active COM port.
  3599. SeeAlso: AX=8000h,AX=8025h,INT 21/AH=35h
  3600. --------S-1481-------------------------------
  3601. INT 14 - COURIERS.COM - CHECK IF PORT BUSY
  3602.     AH = 81h
  3603.     AL = port number (1-4)
  3604. Return: AH = 00h port available
  3605.          01h port exists but already in use
  3606.          02h port nonexistent
  3607. Program: COURIERS is a TSR utility by PC Magazine
  3608. SeeAlso: AH=83h,AH=8Dh
  3609. --------S-1481-------------------------------
  3610. INT 14 - COMM-DRV - EXTENDED INITIALIZATION
  3611.     AH = 81h
  3612.     BX:DI -> port control block (see #0262)
  3613.     DX = port number
  3614. Return: AH = line status register (see #0201)
  3615.         error if bit 7 set
  3616.     AL = modem status register (see #0202)
  3617. Program: COMM-DRV is a universal serial communications driver by Willies'
  3618.       Computer Software Company, which supports standard INT 14 and
  3619.       FOSSIL calls as well as its own interfaces
  3620. Note:    AX=8001h should be called first to fill in the port control block
  3621. SeeAlso: AH=00h,AX=8001h,AH=82h"COMM-DRV",AH=86h"COMM-DRV"
  3622.  
  3623. Format of COMM-DRV port control block:
  3624. Offset    Type    Description    (Table 0262)
  3625.  00h    WORD    port IO address
  3626.  02h    WORD    port IRQ
  3627.  04h    WORD    baud rate
  3628.  06h    WORD    parity
  3629.  08h    WORD    data bits
  3630.  0Ah    WORD    stop bits
  3631.  0Ch    WORD    break status (0000h off)
  3632.  0Eh    WORD    flow control protocol
  3633.  10h    BYTE    input block
  3634.  11h    BYTE    output block
  3635.  12h    WORD    low threshold
  3636.  14h    WORD    high threshold
  3637.  16h    WORD    segment of buffer
  3638.  18h    WORD    offset of buffer
  3639.  1Ah    WORD    input buffer length
  3640.  1Ch    WORD    output buffer length
  3641.  1Eh    BYTE    auxiliary address
  3642.  1Fh    BYTE    spare
  3643.  20h  4 WORDs    spares
  3644. --------V-148100-----------------------------
  3645. INT 14 - VIDEO FOSSIL - RETURN VFOSSIL INFORMATION
  3646.     AX = 8100h
  3647.     ES:DI -> buffer for VFOSSIL information (see #0263)
  3648. Return: AX = 1954h if installed
  3649. SeeAlso: AH=7Eh,AX=8101h
  3650.  
  3651. Format of VFOSSIL information:
  3652. Offset    Size    Description    (Table 0263)
  3653.  00h    WORD    size of information in bytes, including this field
  3654.  02h    WORD    VFOSSIL major version
  3655.  04h    WORD    VFOSSIL revision level
  3656.  06h    WORD    highest VFOSSIL application function supported
  3657. --------V-148101-----------------------------
  3658. INT 14 - VIDEO FOSSIL - OPEN VFOSSIL
  3659.     AX = 8101h
  3660.     ES:DI -> buffer for application function table (see #0264)
  3661.     CX = length of buffer in bytes
  3662. Return: AX = 1954h if installed
  3663.         BH = highest VFOSSIL application function supported
  3664. Note:    the number of initialized pointers in the application function table
  3665.       will never exceed CX/4; if the buffer is large enough, BH+1 pointers
  3666.       will be initialized
  3667. SeeAlso: AX=8102h
  3668.  
  3669. Format of VFOSSIL application function table:
  3670. Offset    Size    Description    (Table 0264)
  3671.  00h    DWORD    -> function to query current video mode (VioGetMode)(see #0269)
  3672.  04h    DWORD    -> function to set video mode (VioSetMode) (see #0270)
  3673.  08h    DWORD    -> function to query hardware config (VioGetConfig) (see #0271)
  3674.  0Ch    DWORD    -> function to write data in TTY mode (VioWrtTTY) (see #0272)
  3675.  10h    DWORD    -> function to get current ANSI state (VioGetANSI) (see #0273)
  3676.  14h    DWORD    -> function to set new ANSI state (VioSetANSI) (see #0274)
  3677.  18h    DWORD    -> function to get curr cursor position (VioGetCurPos)
  3678.           (see #0275)
  3679.  1Ch    DWORD    -> function to set cursor position (VioSetCurPos) (see #0276)
  3680.  20h    DWORD    -> function to get cursor shape (VioGetCurType) (see #0277)
  3681.  24h    DWORD    -> function to set cursor shape (VioSetCurType) (see #0278)
  3682.  28h    DWORD    -> function to scroll screen up (VioScrollUp) (see #0279)
  3683.  2Ch    DWORD    -> function to scroll screen down (VioScrollDn) (see #0280)
  3684.  30h    DWORD    -> function to read cell string from screen (VioReadCellStr)
  3685.           (see #0281)
  3686.  34h    DWORD    -> function to read char string from screen (VioReadCharStr)
  3687.           (see #0282)
  3688.  38h    DWORD    -> function to write a cell string (VioWrtCellStr)
  3689.           (see #0283)
  3690.  3Ch    DWORD    -> function to write char string, leaving attr (VioWrtCharStr)
  3691.           (see #0284)
  3692.  40h    DWORD    -> function to write char string,const attr (VioWrtCharStrAttr)
  3693.           (see #0285)
  3694.  44h    DWORD    -> function to replicate an attribute (VioWrtNAttr)
  3695.           (see #0286)
  3696.  48h    DWORD    -> function to replicate a cell (VioWrtNCell)
  3697.           (see #0287)
  3698.  4Ch    DWORD    -> function to replicate a character (VioWrtNChar)
  3699.           (see #0288)
  3700.  
  3701. Format of VFOSSIL video mode data structure:
  3702. Offset    Size    Description    (Table 0265)
  3703.  00h    WORD    length of structure including this field
  3704.  02h    BYTE    mode characteristics
  3705.         bit 0: clear if MDA, set otherwise
  3706.         bit 1: graphics mode
  3707.         bit 2: color disabled (black-and-white)
  3708.  03h    BYTE    number of colors supported (1=2 colors, 4=16 colors, etc)
  3709.  04h    WORD    number of text columns
  3710.  06h    WORD    number of text rows
  3711.  08h    WORD    reserved
  3712.  0Ah    WORD    reserved
  3713.  0Ch    DWORD    reserved
  3714.  
  3715. Format of VFOSSIL video configuration data:
  3716. Offset    Size    Description    (Table 0266)
  3717.  00h    WORD    structure length including this field
  3718.  02h    WORD    adapter type
  3719.         00h monochrome/printer
  3720.         01h CGA
  3721.         02h EGA
  3722.         03h VGA
  3723.         07h 8514/A
  3724.  04h    WORD    display type
  3725.         00h monochrome
  3726.         01h color
  3727.         02h enhanced color
  3728.         09h 8514
  3729.  06h    DWORD    adapter memory size
  3730.  
  3731. Format of VFOSSIL cursor type record:
  3732. Offset    Size    Description    (Table 0267)
  3733.  00h    WORD    cursor start line
  3734.  02h    WORD    cursor end line
  3735.  04h    WORD    cursor width (always 01h)
  3736.  06h    WORD    cursor attribute (FFFFh = hidden)
  3737.  
  3738. (Table 0268)
  3739. Values for VFOSSIL error code:
  3740.  0000h    successful
  3741.  0074h    internal VIO failure
  3742.  0163h    unsupported mode
  3743.  0166h    invalid row value
  3744.  0167h    invalid column value
  3745.  017Eh    buffer too small
  3746.  01A5h    invalid VIO parameter
  3747.  01B4h    invalid VIO handle
  3748.  
  3749. (Table 0269)
  3750. Call VioGetMode with:
  3751.     STACK:    WORD    VIO handle (must be 00h)
  3752.         DWORD    pointer to video mode data structure (see #0265)
  3753. Return: AX = error code (00h, 74h, 17Eh, 1B4h) (see #0268)
  3754. SeeAlso: #0270
  3755.  
  3756. (Table 0270)
  3757. Call VioSetMode with:
  3758.     STACK:    WORD    VIO handle (must be 00h)
  3759.         DWORD    pointer to video mode data structure (see #0265)
  3760. Return: AX = error code (00h, 74h, 163h, 17Eh, 1A5h, 1B4h) (see #0268)
  3761. SeeAlso: #0269
  3762.  
  3763. (Table 0271)
  3764. Call VioGetConfig with:
  3765.     STACK:    WORD    VIO handle (must be 00h)
  3766.         DWORD    pointer to video configuration data buffer (see #0266)
  3767. Return: AX = error code (00h, 74h, 17Eh, 1B4h) (see #0268)
  3768.  
  3769. (Table 0272)
  3770. Call VioWrtTTY with:
  3771.     STACK:    WORD    VIO handle (must be 00h)
  3772.         WORD    length of string
  3773.         DWORD    pointer to character string to be written to screen
  3774. Return: AX = error code (00h, 74h, 1B4h) (see #0268)
  3775. Notes:    write wraps at end of line and terminates if it reaches end of screen
  3776.     in ANSI mode, ANSI control sequences are interpreted, and this func is
  3777.       not required to be reentrant; in non-ANSI mode, the function is
  3778.       reentrant and may be called from within an MS-DOS function call
  3779.  
  3780. (Table 0273)
  3781. Call VioGetANSI with:
  3782.     STACK:    WORD    VIO handle (must be 00h)
  3783.         DWORD    pointer to WORD which will be set to 00h if ANSI is off
  3784.             or 01h if ANSI is on
  3785. Return: AX = error code (00h, 74h, 1B4h) (see #0268)
  3786. SeeAlso: #0274
  3787.  
  3788. (Table 0274)
  3789. Call VioSetANSI with:
  3790.     STACK:    WORD    VIO handle (must be 00h)
  3791.         DWORD    pointer to WORD indicating new state of ANSI
  3792.             00h off, 01h on
  3793. Return: AX = error code (00h, 74h, 1A4h, 1B4h) (see #0268)
  3794. SeeAlso: #0273
  3795.  
  3796. (Table 0275)
  3797. Call VioGetCurPos with:
  3798.     STACK:    WORD    VIO handle (must be 00h)
  3799.         DWORD    pointer to WORD to hold current cursor column (0-based)
  3800.         DWORD    pointer to WORD to hold current cursor row (0-based)
  3801. Return: AX = error code (00h, 74h, 1B4h) (see #0268)
  3802. SeeAlso: #0276
  3803.  
  3804. (Table 0276)
  3805. Call VioSetCurPos with:
  3806.     STACK:    WORD    VIO handle (must be 00h)
  3807.         WORD    cursor column
  3808.         WORD    cursor row
  3809. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0268)
  3810. Note:    if either coordinate is invalid, the cursor is not moved
  3811. SeeAlso: #0275
  3812.  
  3813. (Table 0277)
  3814. Call VioGetCurType with:
  3815.     STACK:    WORD    VIO handle (must be 00h)
  3816.         DWORD    pointer to cursor type record (see #0267)
  3817. Return: AX = error code (00h, 74h, 1B4h) (see #0268)
  3818. SeeAlso: #0278
  3819.  
  3820. (Table 0278)
  3821. Call VioSetCurType with:
  3822.     STACK:    WORD    VIO handle (must be 00h)
  3823.         DWORD    pointer to cursor type record (see #0267)
  3824. Return: AX = error code (00h, 74h, 1A4h, 1B4h) (see #0268)
  3825. SeeAlso: #0279
  3826.  
  3827. (Table 0279)
  3828. Call VioScrollUp with:
  3829.     STACK:    WORD    VIO handle (must be 00h)
  3830.         DWORD    pointer to char/attr cell for filling emptied rows
  3831.         WORD    number or rows to scroll (FFFFh = clear area)
  3832.         WORD    right column of scroll area
  3833.         WORD    bottom row of scroll area
  3834.         WORD    left column of scroll area
  3835.         WORD    top row of scroll area
  3836. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0268)
  3837. SeeAlso: #0280,INT 10/AH=06h
  3838.  
  3839. (Table 0280)
  3840. Call VioScrollDn with:
  3841.     STACK:    WORD    VIO handle (must be 00h)
  3842.         DWORD    pointer to char/attr cell for filling emptied rows
  3843.         WORD    number or rows to scroll (FFFFh = clear area)
  3844.         WORD    right column of scroll area
  3845.         WORD    bottom row of scroll area
  3846.         WORD    left column of scroll area
  3847.         WORD    top row of scroll area
  3848. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0268)
  3849. SeeAlso: #0279,INT 10/AH=07h
  3850.  
  3851. (Table 0281)
  3852. Call VioReadCellStr with:
  3853.     STACK:    WORD    VIO handle (must be 00h)
  3854.         WORD    column at which to start reading
  3855.         WORD    row at which to start reading
  3856.         DWORD    pointer to WORD containing length of buffer in bytes
  3857.             on return, WORD contains number of bytes actually read
  3858.         DWORD    pointer to buffer for cell string
  3859. Return: AX = error code (00h, 74h, 166h ,167h, 1B4h) (see #0268)
  3860.  
  3861. (Table 0282)
  3862. Call VioReadCharStr with:
  3863.     STACK:    WORD    VIO handle (must be 00h)
  3864.         WORD    column at which to start reading
  3865.         WORD    row at which to start reading
  3866.         DWORD    pointer to WORD containing length of buffer in bytes
  3867.             on return, WORD contains number of bytes actually read
  3868.         DWORD    pointer to buffer for character string
  3869. Return: AX = error code (00h, 74h, 166h ,167h, 1B4h) (see #0268)
  3870.  
  3871. (Table 0283)
  3872. Call VioWrtCellStr with:
  3873.     STACK:    WORD    VIO handle (must be 00h)
  3874.         WORD    column at which to start writing
  3875.         WORD    row at which to start writing
  3876.         WORD    length of cell string in bytes
  3877.         DWORD    pointer to cell string to write
  3878. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0268)
  3879. Note:    write wraps at end of line and terminates if it reaches end of screen
  3880.  
  3881. (Table 0284)
  3882. Call VioWrtCharStr with:
  3883.     STACK:    WORD    VIO handle (must be 00h)
  3884.         WORD    column at which to start writing
  3885.         WORD    row at which to start writing
  3886.         WORD    length of character string
  3887.         DWORD    pointer to character string to write
  3888. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0268)
  3889. Note:    write wraps at end of line and terminates if it reaches end of screen
  3890.  
  3891. (Table 0285)
  3892. Call VioWrtCharStrAttr with:
  3893.     STACK:    WORD    VIO handle (must be 00h)
  3894.         DWORD    pointer to attribute to be applied to each character
  3895.         WORD    column at which to start writing
  3896.         WORD    row at which to start writing
  3897.         WORD    length of character string
  3898.         DWORD    pointer to character string to write
  3899. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0268)
  3900. Note:    write wraps at end of line and terminates if it reaches end of screen
  3901.  
  3902. (Table 0286)
  3903. Call VioWrtNAttr with:
  3904.     STACK:    WORD    VIO handle (must be 00h)
  3905.         WORD    column at which to start writing
  3906.         WORD    row at which to start writing
  3907.         WORD    number of times to write attribute
  3908.         DWORD    pointer to display attribute to replicate
  3909. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0268)
  3910. Note:    write wraps at end of line and terminates if it reaches end of screen
  3911.  
  3912. (Table 0287)
  3913. Call VioWrtNCell with:
  3914.     STACK:    WORD    VIO handle (must be 00h)
  3915.         WORD    column at which to start writing
  3916.         WORD    row at which to start writing
  3917.         WORD    number of times to write cell
  3918.         DWORD    pointer to cell to replicate
  3919. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0268)
  3920. Note:    write wraps at end of line and terminates if it reaches end of screen
  3921.  
  3922. (Table 0288)
  3923. Call VioWrtNChar with:
  3924.     STACK:    WORD    VIO handle (must be 00h)
  3925.         WORD    column at which to start writing
  3926.         WORD    row at which to start writing
  3927.         WORD    number of times to write character
  3928.         DWORD    pointer to character to replicate
  3929. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0268)
  3930. Note:    write wraps at end of line and terminates if it reaches end of screen
  3931. --------V-148102-----------------------------
  3932. INT 14 - VIDEO FOSSIL - CLOSE VFOSSIL
  3933.     AX = 8102h
  3934. Return: AX = 1954h
  3935. Note:    terminates all operations; after this call, the video FOSSIL may either
  3936.       be removed from memory or reinitialized
  3937. SeeAlso: AX=8101h,AX=8103h
  3938. --------V-148103-----------------------------
  3939. INT 14 - VIDEO FOSSIL - UNINSTALL
  3940.     AX = 8103h
  3941. Return: AX = 1954h
  3942. Note:    this is an extension to the VFOSSIL spec by Bob Hartman's VFOS_IBM
  3943. --------K-1482-------------------------------
  3944. INT 14 - KEYBOARD FOSSIL
  3945.     AH = 82h
  3946. SeeAlso: AH=7Eh
  3947. --------S-1482-------------------------------
  3948. INT 14 - COURIERS.COM - CONFIGURE PORT
  3949.     AH = 82h
  3950.     AL = port number (1-4)
  3951.     BX = speed (bps)
  3952.     CX = bit flags
  3953.         bit 0: enable input flow control
  3954.         bit 1: enable output flow control
  3955.         bit 2: use X.PC protocol (not yet implemented)
  3956. SeeAlso: AH=00h,AH=8Ch,INT 7A"X.PC"
  3957. --------S-1482-------------------------------
  3958. INT 14 - COMM-DRV v14.0 - PORT CLEANUP
  3959.     AH = 82h
  3960.     DX = port number
  3961. Return: AH bit 7 set on error
  3962.     AH bit 7 clear if successful
  3963. Desc:    reset the port to its state before the AH=81h initialization and unhook
  3964.       any interrupts used by the port
  3965. SeeAlso: AH=81h"COMM-DRV",AH=83h"COMM-DRV"
  3966. ----------1483-------------------------------
  3967. INT 14 - SYSTEM FOSSIL
  3968.     AH = 83h
  3969. SeeAlso: AH=7Eh
  3970. --------S-1483-------------------------------
  3971. INT 14 - COURIERS.COM - START INPUT
  3972.     AH = 83h
  3973.     ES:BX -> circular input buffer
  3974.     CX = length of buffer
  3975.         (should be at least 128 bytes if input flow control enabled)
  3976. SeeAlso: AH=18h,AH=87h,AH=8Dh,AH=A5h"BAPI"
  3977. --------S-1483-------------------------------
  3978. INT 14 - COMM-DRV v14.0 - FLUSH COMMUNICATION BUFFERS
  3979.     AH = 83h
  3980.     DX = port number
  3981.     AL = subfunction
  3982.         00h flush input buffer
  3983.         01h flush output buffer
  3984.         02h flush both buffers
  3985. Return: AH bit 7 set on error
  3986.     AH bit 7 clear if successful
  3987. SeeAlso: AH=81h"COMM-DRV",AH=84h"COMM-DRV"
  3988. --------S-1484-------------------------------
  3989. INT 14 - COURIERS.COM - READ CHARACTER
  3990.     AH = 84h
  3991. Return: ZF set if no characters available
  3992.     ZF clear
  3993.        AL = character
  3994.        AH = modem status bits
  3995.         bit 7: set on input buffer overflow
  3996. SeeAlso: AH=02h,AH=86h,AH=89h
  3997. --------S-1484-------------------------------
  3998. INT 14 - COMM-DRV v14.0 - SEND PACKET
  3999.     AH = 84h
  4000.     CX = packet length in bytes
  4001.     DX = port number
  4002.     ES:DI -> packet to be sent
  4003. Return: AH = line status (see #0201)
  4004.         bit 7 set on error
  4005.     AL destroyed
  4006. SeeAlso: AH=83h"COMM-DRV",AH=85h"COMM-DRV",AH=86h"COMM-DRV"
  4007. --------S-1485-------------------------------
  4008. INT 14 - COURIERS.COM - FLUSH PENDING INPUT
  4009.     AH = 85h
  4010. SeeAlso: AH=0Ah,AH=88h"COURIERS"
  4011. --------S-1485-------------------------------
  4012. INT 14 - COMM-DRV v14.0 - RECEIVE PACKET
  4013.     AH = 85h
  4014.     CX = length of packet in bytes
  4015.     DX = port number
  4016.     ES:DI -> buffer for packet
  4017. Return: AH = line status (see #0201)
  4018.         bit 7 set on error
  4019.     AL destroyed
  4020. Note:    this call requires that at least the requested number of bytes are
  4021.       already present in the input buffer, and will fail if there are
  4022.       fewer bytes available
  4023. SeeAlso: AH=84h"COMM-DRV",AH=86h"COMM-DRV",AH=8Eh"COMM-DRV"
  4024. --------S-1486-------------------------------
  4025. INT 14 - COURIERS.COM - START OUTPUT
  4026.     AH = 86h
  4027.     ES:BX -> output buffer
  4028.     CX = length of output buffer
  4029. SeeAlso: AH=19h,AH=83h"COURIERS",AH=A4h"BAPI"
  4030. --------S-1486-------------------------------
  4031. INT 14 - COMM-DRV v14.0 - SET INPUT/OUTPUT TIMEOUTS
  4032.     AH = 86h
  4033.     BL = maximum clock ticks to wait before signalling error on input func
  4034.     BH = maximum clock ticks to wait before signalling error on output
  4035.     DX = port number
  4036.     SI = input timeout in clock ticks if BL=FFh and BH=FFh
  4037.     DI = output timeout in clock ticks if BL=FFh and BH=FFh
  4038. Return: AH bit 7 set on error
  4039.     AH bit 7 clear if successful
  4040. Note:    functions 02h, 85h, and 8Eh will wait for the input timeout before
  4041.       returning an error when no data is available; functions 01h and 84h
  4042.       will wait for the output timeout before returning an error if there
  4043.       is no space to output the data
  4044. SeeAlso: AH=01h,AH=02h,AH=84h"COMM-DRV",AH=85h"COMM-DRV",AH=8Eh"COMM-DRV"
  4045. --------S-1487-------------------------------
  4046. INT 14 - COURIERS.COM - OUTPUT STATUS
  4047.     AH = 87h
  4048. Return: AX = number of unsent characters
  4049. SeeAlso: AX=88h"COURIERS"
  4050. --------S-1487-------------------------------
  4051. INT 14 - COMM-DRV v14.0 - TURN ON DTR
  4052.     AH = 87h
  4053.     DX = port number
  4054. Return: AH bit 7 set on error
  4055.     AH bit 7 clear if successful
  4056. SeeAlso: AX=8000h"COMM-DRV",AH=88h"COMM-DRV",AH=89h"COMM-DRV"
  4057. --------S-1488-------------------------------
  4058. INT 14 - COURIERS.COM - ABORT OUTPUT
  4059.     AH = 88h
  4060. SeeAlso: AH=09h,AH=85h"COURIERS"
  4061. --------S-1488-------------------------------
  4062. INT 14 - COMM-DRV v14.0 - TURN OFF DTR
  4063.     AH = 88h
  4064.     DX = port number
  4065. Return: AH bit 7 set on error
  4066.     AH bit 7 clear if successful
  4067. Program: COMM-DRV is a universal serial communications driver by Willies'
  4068.       Computer Software Company, which supports standard INT 14 and
  4069.       FOSSIL calls as well as its own interfaces
  4070. SeeAlso: AX=8000h"COMM-DRV",AH=87h"COMM-DRV",AH=8Ah"COMM-DRV"
  4071. --------S-1489-------------------------------
  4072. INT 14 - COURIERS.COM - SEND SINGLE CHARACTER
  4073.     AH = 89h
  4074.     CL = character to send
  4075. SeeAlso: AH=01h,AH=84h"COURIERS"
  4076. --------S-1489-------------------------------
  4077. INT 14 - COMM-DRV v14.0 - TURN ON RTS
  4078.     AH = 89h
  4079.     DX = port number
  4080. Return: AH bit 7 set on error
  4081.     AH bit 7 clear if successful
  4082. SeeAlso: AX=8000h"COMM-DRV",AH=87h"COMM-DRV",AH=8Ah"COMM-DRV"
  4083. --------S-148A-------------------------------
  4084. INT 14 - COURIERS.COM - SEND BREAK
  4085.     AH = 8Ah
  4086. SeeAlso: AH=89h"COURIERS",AH=FAh
  4087. --------S-148A-------------------------------
  4088. INT 14 - COMM-DRV v14.0 - TURN OFF RTS
  4089.     AH = 8Ah
  4090.     DX = port number
  4091. Return: AH bit 7 set on error
  4092.     AH bit 7 clear if successful
  4093. SeeAlso: AX=8000h"COMM-DRV",AH=88h"COMM-DRV",AH=89h"COMM-DRV"
  4094. --------S-148B-------------------------------
  4095. INT 14 - COMM-DRV v14.0 - SET USER INTERRUPT ROUTINE
  4096.     AH = 8Bh
  4097.     CX = bitmask of interrupt to process
  4098.         00h = deinstall
  4099.     BX:DI -> DWORD containing address of function to be called
  4100. Return: AH bit 7 clear if successful
  4101.     AH bit 7 set on error
  4102. --------S-148C-------------------------------
  4103. INT 14 - COURIERS.COM - SET SPEED
  4104.     AH = 8Ch
  4105.     BX = speed in bps
  4106. SeeAlso: AH=00h,AH=82h"COURIERS"
  4107. --------S-148C-------------------------------
  4108. INT 14 - COMM-DRV v14.0 - READ UART REGISTER
  4109.     AH = 8Ch
  4110.     AL = register offset
  4111.     DX = port number
  4112. Return: AH bit 7 set on error
  4113.     AH bit 7 clear if successful
  4114.         AL = contents of UART register
  4115. SeeAlso: AH=8Dh"COMM-DRV"
  4116. --------S-148D-------------------------------
  4117. INT 14 - COURIERS.COM - DECONFIGURE PORT
  4118.     AH = 8Dh
  4119. SeeAlso: AH=82h"COURIERS"
  4120. --------S-148D-------------------------------
  4121. INT 14 - COMM-DRV v14.0 - WRITE UART REGISTER
  4122.     AH = 8Dh
  4123.     AL = register offset
  4124.     BL = new value for UART register
  4125.     DX = port number
  4126. Return: AH bit 7 set on error
  4127.     AH bit 7 clear if successful
  4128. SeeAlso: AH=8Ch"COMM-DRV"
  4129. --------S-148E-------------------------------
  4130. INT 14 - COMM-DRV v14.0 - READ PACKET NONDESTRUCTIVELY
  4131.     AH = 8Eh
  4132.     CX = length of packet in bytes
  4133.     DX = port number
  4134.     ES:DI -> buffer for packet
  4135. Return: AH = line status (see #0201)
  4136.         bit 7 set on error (see AX=8000h"COMM-DRV")
  4137.     AL destroyed
  4138. Program: COMM-DRV is a universal serial communications driver by Willies'
  4139.       Computer Software Company, which supports standard INT 14 and
  4140.       FOSSIL calls as well as its own interfaces
  4141. Desc:    retrieve a packet from the input buffer without removing it from the
  4142.       buffer
  4143. Note:    this call requires that at least the requested number of bytes are
  4144.       already present in the input buffer, and will fail if there are
  4145.       fewer bytes available
  4146. SeeAlso: AX=8000h"COMM-DRV",AH=84h"COMM-DRV",AH=85h"COMM-DRV",AH=86h"COMM-DRV"
  4147. --------S-14A0-------------------------------
  4148. INT 14 - 3com BAPI SERIAL I/O - CONNECT TO PORT
  4149.     AH = A0h
  4150.     ES:BX -> ASCIZ internet host name
  4151.     CX = length of name
  4152. Return: AH = return code (00h,04h-06h,08h,0Ah-0Ch) (see #0289)
  4153.     CL = session ID
  4154. Program: the Bridge Application Program Interface is a set of functions which
  4155.       makes many of the details of LAN communications transparent
  4156. Note:    Novell TELAPI.EXE returns AH=09h (not supported) and CL=00h
  4157. SeeAlso: AH=A1h"BAPI",AH=A2h"BAPI",AH=A5h"BAPI",AX=AF00h
  4158.  
  4159. (Table 0289)
  4160. Values for 3com BAPI return code:
  4161.  00h    successful
  4162.  01h    no characters written
  4163.  02h    no characters read
  4164.  03h    no such session
  4165.  04h    clearinghouse name not found
  4166.  05h    no response from host
  4167.  06h    no more sessions available
  4168.  07h    session aborted
  4169.  08h    invalid clearinghouse name
  4170.  09h    not supported
  4171.  0Ah    internal (general) network error
  4172.  0Bh    out of memory
  4173.  0Ch    invalid IP address
  4174. --------S-14A0--CXFFFF-----------------------
  4175. INT 14 - Interconnections Inc. TES - INSTALLATION CHECK/STATUS REPORT
  4176.     AH = A0h
  4177.     CX = FFFFh
  4178. Return: CF clear if successful
  4179.         AX = 5445h ('TE')
  4180.         CX <> FFFFh
  4181.         DX = port number
  4182.     CF set on error
  4183. Program: TES is a network serial port emulation program
  4184. SeeAlso: AH=A1h"TES"
  4185. --------S-14A1-------------------------------
  4186. INT 14 - 3com BAPI SERIAL I/O - DISCONNECT FROM PORT
  4187.     AH = A1h
  4188.     DH = session ID (00h for external session managment)
  4189. Return: AH = return code (00h,03h,07h,0Ah,0Bh) (see #0289)
  4190.     AL destroyed (Novell TELAPI.EXE)
  4191. SeeAlso: AH=A0h"BAPI"
  4192. --------S-14A1-------------------------------
  4193. INT 14 - Interconnections Inc. TES - GET LIST OF SESSIONS WITH STATUS
  4194.     AH = A1h
  4195. Return: CX = number of active sessions
  4196.     ES:SI -> status array (see #0290)
  4197. SeeAlso: AH=A2h"TES",AH=A3h"TES"
  4198.  
  4199. Format of Interconnections TES status array entry:
  4200. Offset    Size    Description    (Table 0290)
  4201.  00h    BYTE    status
  4202.  01h    WORD    offset of name
  4203. --------S-14A2-------------------------------
  4204. INT 14 - 3com BAPI SERIAL I/O - WRITE CHARACTER
  4205.     AH = A2h
  4206.     AL = character
  4207.     DH = session ID (00h for external session managment)
  4208. Return: AH = return code (00h,01h,03h,07h,0Ah,0Bh) (see #0289)
  4209. SeeAlso: AH=A0h"BAPI",AH=A3h"BAPI",AH=A4h"BAPI"
  4210. --------S-14A2-------------------------------
  4211. INT 14 - Interconnections Inc. TES - GET LIST OF SERVER NAMES
  4212.     AH = A2h
  4213. Return: CX = number of servers
  4214.     ES:SI -> array of offsets from ES for server names
  4215. SeeAlso: AH=A1h"TES"
  4216. --------S-14A3-------------------------------
  4217. INT 14 - 3com BAPI SERIAL I/O - READ CHARACTER
  4218.     AH = A3h
  4219.     DH = session ID (00h for external session managment)
  4220. Return: AH = return code (00h,02h,03h,07h,0Ah,0Bh) (see #0289)
  4221.     AL = character read or 00h if none available
  4222. SeeAlso: AH=A0h"BAPI",AH=A2h"BAPI",AH=A5h"BAPI",AH=A7h"BAPI"
  4223. --------S-14A3-------------------------------
  4224. INT 14 - Interconnections Inc. TES - START A NEW SESSION
  4225.     AH = A3h
  4226.     ES:SI -> ???
  4227. Return: CF clear if successful
  4228.         AX = 5445h ('TE')
  4229.         CX <> FFFFh
  4230.         DX = port number
  4231.     CF set on error
  4232. SeeAlso: AH=A1h"TES",AH=A4h"TES",AH=A6h"TES"
  4233. --------S-14A4-------------------------------
  4234. INT 14 - 3com BAPI SERIAL I/O - WRITE BLOCK
  4235.     AH = A4h
  4236.     CX = length of buffer in bytes
  4237.     DH = session ID (00h for external session managment)
  4238.     ES:BX -> buffer containing data
  4239. Return: AH = return code (00h,01h,03h,07h,0Ah,0Bh) (see #0289)
  4240.     CX = number of bytes actually sent
  4241. SeeAlso: AH=19h,AH=86h,AH=A0h"BAPI",AH=A5h"BAPI"
  4242. --------S-14A4-------------------------------
  4243. INT 14 - Interconnections Inc. TES - HOLD CURRENTLY ACTIVE SESSION
  4244.     AH = A4h
  4245.     ???
  4246. Return: ???
  4247. SeeAlso: AH=A3h"TES",AH=A5h"TES"
  4248. --------S-14A5-------------------------------
  4249. INT 14 - 3com BAPI SERIAL I/O - READ BLOCK
  4250.     AH = A5h
  4251.     CX = length of buffer
  4252.     DH = session ID (00h for external session managment)
  4253.     ES:BX -> buffer for data
  4254. Return: AH = return code (00h,02h,03h,07h,0Ah,0Bh) (see #0289)
  4255.     CX = number of bytes actually read
  4256. SeeAlso: AH=18h,AH=83h"COURIERS",AH=A0h"BAPI",AH=A3h"BAPI",AH=A4h"BAPI"
  4257. SeeAlso: AH=A7h"BAPI",AX=FF02h
  4258. --------S-14A5-------------------------------
  4259. INT 14 - Interconnections Inc. TES - RESUME A SESSION
  4260.     AH = A5h
  4261.     AL = session number
  4262. Return: ???
  4263. SeeAlso: AH=A4h"TES",AH=A6h"TES"
  4264. --------S-14A6-------------------------------
  4265. INT 14 - 3com BAPI SERIAL I/O - SEND SHORT BREAK
  4266.     AH = A6h
  4267.     DH = session ID (00h for external session managment)
  4268. Return: AH = return code (00h,03h,07h,0Ah,0Bh) (see #0289)
  4269. Desc:    generate a short break signal; if data delivery was turned off by the
  4270.       break, wait for the host to turn it on again
  4271. SeeAlso: AH=1Ah,AH=8Ah,AH=FAh,AH=A0h"BAPI"
  4272. --------S-14A6-------------------------------
  4273. INT 14 - Interconnections Inc. TES - DROP A SESSION
  4274.     AH = A6h
  4275.     AL = session number
  4276. Return: AH = status
  4277.         00h successful
  4278.         else error
  4279. SeeAlso: AH=A3h"TES",AH=A5h"TES"
  4280. --------S-14A7-------------------------------
  4281. INT 14 - 3com BAPI SERIAL I/O - READ STATUS
  4282.     AH = A7h
  4283.     DH = session ID (00h for external session managment)
  4284. Return: AH = return code (00h,03h,07h,0Ah,0Bh) (see #0289)
  4285.     CX = number of bytes available for reading
  4286. Note:    Novell TELAPI.EXE v4.01 always returns either 0 or 1 bytes available
  4287. SeeAlso: AH=A5h"BAPI"
  4288. --------S-14A7-------------------------------
  4289. INT 14 - Interconnections Inc. TES - SWITCH TO NEXT ACTIVE SESSION
  4290.     AH = A7h
  4291.     ???
  4292. Return: ???
  4293. SeeAlso: AH=A3h"TES",AH=A5h"TES"
  4294. --------S-14A8-------------------------------
  4295. INT 14 - Interconnections Inc. TES - SEND STRING TO COMMAND INTERPRETER
  4296.     AH = A8h
  4297.     AL = 00h no visible response
  4298.     ES:SI -> ASCIZ command
  4299. Return: ???
  4300. --------N-14A8-------------------------------
  4301. INT 14 - Novell TelAPI v4.01 - CONNECTION INFORMATION???
  4302.     AH = A8h
  4303.     DH = session ID???
  4304.     CH = subfunction
  4305.         02h ???
  4306.         0Dh ???
  4307.         0Fh ???
  4308.         10h ???
  4309.         11h ???
  4310.         28h ???
  4311.         else
  4312.         Return: AH = 09h (not supported)
  4313. Return: AH = return code (see #0289)
  4314.         00h successful
  4315.         CL = ??? (0/1/8) (subfunctions 02h,0Dh,0Fh,10h)
  4316.         CL = ??? (7Fh/FFh) (subfunction 28h)
  4317.         CX = ??? (subfunction 11h)
  4318. SeeAlso: AH=A9h"TelAPI"
  4319. --------N-14A9-------------------------------
  4320. INT 14 - Novell TelAPI v4.01 - CONNECTION CONTROL???
  4321.     AH = A9h
  4322.     DH = session ID???
  4323.     CH = subfunction
  4324.         02h ???
  4325.         0Dh ???
  4326.         0Fh ???
  4327.         10h ???
  4328.         11h ???
  4329.         28h ???
  4330.         else
  4331.         Return: AH = 09h (not supported)
  4332.     ???
  4333. Return: AH = return code (see #0289)
  4334.     ???
  4335. SeeAlso: AH=A8h"TelAPI",AH=E4h,INT 6B/AX=0600h
  4336. --------V-14AA01-----------------------------
  4337. INT 14 - DimVGA v2.0+ - INSTALLATION CHECK
  4338.     AX = AA01h
  4339. Return: AX = FFFFh if installed, unchanged
  4340.     BX = version (v1.5+ only), BH = major, BL = minor (v1.5 = 0105h)
  4341.     CX = resident segment (v3.1+)
  4342. Program: DimVGA is a public domain screen saver by Menno Pieters
  4343. SeeAlso: AX=AA02h,AX=AA03h,AX=AA06h,INT 11/AX=0225h/BX=6900h,INT 12"KEYBUI"
  4344. SeeAlso: INT 2D/AL=10h"Burnout Plus",INT 2F/AX=6400h,INT 2F/AH=93h
  4345. SeeAlso: INT 2F/AX=C000h"VGAsave",INT 2F/AX=C000h"AD-DOS",INT 2F/AX=C050h
  4346. SeeAlso: INT 2F/AX=E300h
  4347. Index:    screen saver;DimVGA
  4348. --------V-14AA02-----------------------------
  4349. INT 14 - DimVGA v2.0+ - SET TIME-OUT (DIMMING/BLANKING) PERIOD
  4350.     AX = AA02h
  4351.     BX = number of clock ticks
  4352. Return: AX = FFFFh
  4353. Note:    on screen modes with 256 or less colors DimVGA will dim the screen,
  4354.       when more than 256 colors can be used DimVGA will blank the screen.
  4355. SeeAlso: AX=AA01h,AX=AA03h,AX=AA04h,AX=AA06h
  4356. Index:    screen saver;DimVGA
  4357. --------V-14AA03-----------------------------
  4358. INT 14 - DimVGA v2.0+ - SET DIMMING FACTOR
  4359.     AX = AA03h
  4360.     BX = percentage remaining visible (1-99)
  4361. Return: AX = FFFFh
  4362. SeeAlso: AX=AA02h,AX=AA05h,AX=AA06h
  4363. Index:    screen saver;DimVGA
  4364. --------V-14AA04-----------------------------
  4365. INT 14 - DimVGA v2.0+ - GET TIME-OUT PERIOD
  4366.     AX = AA04h
  4367. Return: AX = FFFFh
  4368.     BX = current time-out in clock ticks
  4369. SeeAlso: AX=AA02h,AX=AA05h,AX=AA0Ah
  4370. Index:    screen saver;DimVGA
  4371. --------V-14AA05-----------------------------
  4372. INT 14 - DimVGA v2.0+ - GET DIMMING FACTOR
  4373.     AX = AA05h
  4374. Return: AX = FFFFh
  4375.     BX = current dimming factor
  4376. SeeAlso: AX=AA03h,AX=AA04h,AX=AA0Ah
  4377. Index:    screen saver;DimVGA
  4378. --------V-14AA06-----------------------------
  4379. INT 14 - DimVGA v2.0+ - DISABLE
  4380.     AX = AA06h
  4381. Return: AX = FFFFh
  4382. SeeAlso: AX=AA01h,AX=AA07h,AX=AA0Ah
  4383. Index:    screen saver;DimVGA
  4384. --------V-14AA07-----------------------------
  4385. INT 14 - DimVGA v2.0+ - ENABLE
  4386.     AX = AA07h
  4387. Return: AX = FFFFh
  4388. SeeAlso: AX=AA01h,AX=AA06h,AX=AA0Ah
  4389. Index:    screen saver;DimVGA
  4390. --------V-14AA08-----------------------------
  4391. INT 14 - DimVGA v2.0+ - DIM SCREEN 'MANUALLY'
  4392.     AX = AA08h
  4393. Return: AX = FFFFh
  4394. Note:    this function will dim the screen immediately, even if DimVGA is
  4395.       currently disabled
  4396. SeeAlso: AX=AA01h,AX=AA02h,AX=AA09h
  4397. Index:    screen saver;DimVGA
  4398. --------V-14AA09-----------------------------
  4399. INT 14 - DimVGA v2.0+ - UNDIM SCREEN 'MANUALLY'
  4400.     AX = AA09h
  4401. Return: AX = FFFFh
  4402. Note:    this function will undim the screen immediately, even if DimVGA is
  4403.       currently disabled
  4404. SeeAlso: AX=AA01h,AX=AA08h
  4405. Index:    screen saver;DimVGA
  4406. --------V-14AA0A-----------------------------
  4407. INT 14 - DimVGA v2.0+ - CHECK WHETHER ENABLED
  4408.     AX = AA0Ah
  4409. Return: AX = FFFFh
  4410.     BX = current state (0000h disabled, 0001h enabled)
  4411. SeeAlso: AX=AA01h,AX=AA06h,AX=AA07h
  4412. Index:    screen saver;DimVGA
  4413. --------V-14AA0B-----------------------------
  4414. INT 14 - DimVGA v2.1+ - SET HOTKEY
  4415.     AX = AA0Bh
  4416.     BH = shift state (see #0291)
  4417.     BL = keyboard scancode
  4418. Return: AX = FFFFh
  4419. SeeAlso: AX=AA01h,AX=AA0Ch
  4420. Index:    screen saver;DimVGA
  4421.  
  4422. Bitfields for DimVGA hotkey shift state:
  4423. Bit(s)    Description    (Table 0291)
  4424.  7-4    unused
  4425.  3    Alt key pressed
  4426.  2    Ctrl key pressed
  4427.  1    Left shift key pressed
  4428.  0    Right shift key pressed
  4429. --------V-14AA0C-----------------------------
  4430. INT 14 - DimVGA v2.1+ - GET HOTKEY
  4431.     AX = AA0Ch
  4432. Return: AX = FFFFh
  4433.     BH = shift state (see #0291)
  4434.     BL = keyboard scancode
  4435. SeeAlso: AX=AA01h,AX=AA0Bh
  4436. Index:    screen saver;DimVGA
  4437. --------V-14AA0D-----------------------------
  4438. INT 14 - DimVGA v3.0+ - SET MOUSE CHECK STATUS
  4439.     AX = AA0Dh
  4440.     BX = new mouse check status
  4441.         0000h mouse checking off
  4442.         0001h mouse checking on
  4443. Return: AX = FFFFh
  4444. Note:    before switching mouse checking on, a mouse driver should be
  4445.       found in memory. If no mouse driver is found, mouse checking
  4446.       should be switched off (resident DimVGA does not check by itself).
  4447. SeeAlso: AX=AA01h,AX=AA0Eh
  4448. Index:    screen saver;DimVGA
  4449. --------V-14AA0E-----------------------------
  4450. INT 14 - DimVGA v3.0+ - GET MOUSE CHECK STATUS
  4451.     AX = AA0Eh
  4452. Return: BX = mouse check status (0000h disabled, 0001h enabled)
  4453. SeeAlso: AX=AA01h,AX=AA0Dh
  4454. Index:    screen saver;DimVGA
  4455. --------V-14AA0F-----------------------------
  4456. INT 14 - DimVGA v3.4 - SET LOCKING STATUS
  4457.     AX = AA0Fh
  4458.     BX = locking status
  4459.         0000h disabled
  4460.         0001h enabled
  4461. Return: AX = FFFFh
  4462. SeeAlso: AX=AA01h,AX=AA0Dh,AX=AA10h
  4463. Index:    screen saver;DimVGA
  4464. --------V-14AA10-----------------------------
  4465. INT 14 - DimVGA v3.4 - GET MOUSE CHECK STATUS
  4466.     AX = AA10h
  4467. Return: BX = locking status (0000h disabled, 0001h enabled)
  4468. SeeAlso: AX=AA01h,AX=AA0Dh,AX=AA0Fh
  4469. Index:    screen saver;DimVGA
  4470. --------S-14AF00BXAAAA-----------------------
  4471. INT 14 - 3com BAPI SERIAL I/O - INSTALLATION CHECK
  4472.     AX = AF00h
  4473.     BX = AAAAh
  4474. Return: AX = AF01h if installed
  4475.         BH = protocol type (if BX=AAAAh on entry)
  4476.         01h NetManage TCP/IP
  4477.         BL = version for protocol type (if BX=AAAAh on entry)
  4478. Note:    early versions of the BAPI and the ROM BIOS simply destroy AX; this
  4479.       behavior is used to determine whether the newer functions (AH=B0h,
  4480.       AH=B1h,etc) are available
  4481. SeeAlso: AH=A0h"BAPI"
  4482. --------S-14B0-------------------------------
  4483. INT 14 - 3com BAPI SERIAL I/O - EN/DISABLE "ENTER COMMAND MODE" (ECM) CHARACTER
  4484.     AH = B0h
  4485.     AL = new state (00h disabled, 01h enabled)
  4486. Return: AH = return code (00h,07h,0Ah) (see #0289)
  4487. Note:    disabling the ECM character allows applications to send data which
  4488.       includes the ECM character
  4489. SeeAlso: AX=AF00h"BAPI",AH=B1h,AH=B2h
  4490. --------S-14B1-------------------------------
  4491. INT 14 - 3com BAPI SERIAL I/O - ENTER COMMAND MODE
  4492.     AH = B1h
  4493. Return: AH = return code (00h,07h,0Ah) (see #0289)
  4494. Desc:    provide a means for the application or terminal emulator to perform
  4495.       the same action normally caused by the ECM character
  4496. SeeAlso: AH=B0h,AH=B2h
  4497. --------S-14B2-------------------------------
  4498. INT 14 - 3com BAPI SERIAL I/O - GET ECM WATCH STATE
  4499.     AH = B2h
  4500. Return: AH = return code (00h,07h,0Ah) (see #0289)
  4501.     AL = watch flag (00h disabled, 01h enabled)
  4502. Desc:    determine whether the ECM character is enabled
  4503. SeeAlso: AH=B0h,AH=B1h
  4504. --------S-14B3-------------------------------
  4505. INT 14 - 3com BAPI SERIAL I/O - GET/SET CONFIGURATION INFO
  4506.     AH = B3h
  4507.     AL = direction (00h get, 01h set)
  4508.     DH = session ID (00h for external session managment)
  4509.     DL = configuration item (00h = end-of-line mapping)
  4510.     CX = new configuration item value (if AL=01h)
  4511.         ---if DL=00h---
  4512.         CH = application EOL type (app to Telnet client)
  4513.         01h application will send lone CR
  4514.         02h application will send CR-? pair
  4515.         CL = driver EOL type (Telnet client to Telnet server)
  4516.         01h driver should send CR-NUL pair
  4517.         02h driver should send CR-LF pair
  4518. Return: AH = return code (00h,03h,09h-0Bh) (see #0289)
  4519.     ---if AL=00h---
  4520.     CX = configuration item value (see above)
  4521. SeeAlso: AH=B2h
  4522. --------N-14E0-------------------------------
  4523. INT 14 - TelAPI - ???
  4524.     AH = E0h
  4525.     BX = ???
  4526.     CX:DX = ???
  4527.     DS:DI -> ???
  4528.     ES:SI -> ???
  4529. Return: AX = status (0000h,FF37h,etc.)
  4530.     ES:SI -> ??? if ???
  4531.     ???
  4532. SeeAlso: AH=ECh,AX=FF00h
  4533. --------S-14E000-----------------------------
  4534. INT 14 - MX5 Extended FOSSIL - GET MNP STATUS BLOCK
  4535.     AX = E000h
  4536.     DX = port number (0-3)
  4537. Return: ES:BX -> status block (see #0292)
  4538. Program: MX5 is a FOSSIL driver by MagicSoft which emulates MNP Level 5, and
  4539.       ships with the MTEZ terminal program as MTEMNP.DRV (a TSR despite
  4540.       the .DRV extension)
  4541. SeeAlso: AX=E006h
  4542.  
  4543. Format of MX5 Extended FOSSIL status block:
  4544. Offset    Size    Description    (Table 0292)
  4545.  00h    BYTE    flag: active (00h no, 01h yes)
  4546.  01h    BYTE    MNP level (2,4,5)
  4547.  02h    BYTE    series ID from remote MNP
  4548.  03h    DWORD    total packets transmitted
  4549.  07h    DWORD    duplicate packets transmitted
  4550.  0Bh    DWORD    maximum speed
  4551.  0Fh    DWORD    total packets received
  4552.  13h    DWORD    duplicate packets received
  4553.  17h    DWORD    maximum speed
  4554. --------S-14E001-----------------------------
  4555. INT 14 - MX5 Extended FOSSIL - GET/SET MNP LEVEL
  4556.     AX = E001h
  4557.     BH = function
  4558.         00h get MNP level
  4559.         01h set MNP level
  4560.         BL = new level (00h none, 02h/04h/05h MNP level N)
  4561.     DX = port number (0-3)
  4562. Return: BL = MNP level
  4563. SeeAlso: AX=E002h,AX=E003h,AX=E004h,AX=E006h
  4564. --------S-14E002-----------------------------
  4565. INT 14 - MX5 Extended FOSSIL - GET/SET MNP ANSWER/ORIGINATE MODE
  4566.     AX = E002h
  4567.     BH = function
  4568.         00h get answer/originate mode
  4569.         01h set mode
  4570.         BL = new mode (00h originate [default], 01h answer)
  4571.     DX = port number (0-3)
  4572. Return: BL = answer/originate mode
  4573. SeeAlso: AX=E001h,AX=E003h,AX=E006h
  4574. --------S-14E003-----------------------------
  4575. INT 14 - MX5 Extended FOSSIL - GET/SET MNP WAIT TICKS
  4576.     AX = E003h
  4577.     BH = function
  4578.         00h get wait ticks
  4579.         01h set wait ticks
  4580.         BL = MNP wait ticks (default 0Eh)
  4581.     DX = port number (0-3)
  4582. Return: BL = wait ticks
  4583. SeeAlso: AX=E001h,AX=E002h,AX=E006h
  4584. --------S-14E004-----------------------------
  4585. INT 14 - MX5 Extended FOSSIL - GET/SET MNP CONNECT SOUND LEVEL
  4586.     AX = E004h
  4587.     BH = function
  4588.         00h get sound level
  4589.         01h set sound level
  4590.         BL = new sound level (00h off, 01h on [default])
  4591.     DX = port number
  4592. Return: BL = sound state
  4593. Desc:    specify whether MX5 should generate beeps after an MNP connection
  4594.       (three high beeps if successful, high then low on connection failure)
  4595. SeeAlso: AX=E002h,AX=E006h
  4596. --------S-14E005-----------------------------
  4597. INT 14 - MX5 Extended FOSSIL - UNINSTALL
  4598.     AX = E005h
  4599. Return: BX = segment of MX5's memory block or 0000h on failure
  4600. Note:    caller must free the returned memory block to complete the uninstall
  4601. SeeAlso: AX=E006h
  4602. --------S-14E006BX0000-----------------------
  4603. INT 14 - MX5 Extended FOSSIL - INSTALLATION CHECK
  4604.     AX = E006h
  4605.     BX = 0000h
  4606. Return: BX = 4D58h ('MX') if installed
  4607.         AH = major version
  4608.         AL = minor version
  4609. SeeAlso: AX=E000h,AX=E001h,AX=E005h,AX=E007h
  4610. --------S-14E007-----------------------------
  4611. INT 14 - MX5 Extended FOSSIL - WAIT SPECIFIED NUMBER OF TICKS
  4612.     AX = E007h
  4613.     CX = number of ticks to wait
  4614. Return: nothing
  4615. SeeAlso: AX=E006h
  4616. --------N-14E1-------------------------------
  4617. INT 14 - TelAPI - ???
  4618.     AH = E1h
  4619.     BX = connection ID
  4620.     ???
  4621. Return: AX = status (0000h,FFF7h,maybe others)
  4622.     ???
  4623. SeeAlso: AH=E6h,AX=FF00h
  4624. --------N-14E2-------------------------------
  4625. INT 14 - TelAPI - BUFFERED READ
  4626.     AH = E2h
  4627.     BX = connection ID
  4628.     CX = length of buffer in bytes
  4629.     ES:SI -> buffer for data
  4630. Return: AX = number of characters actually read??? (negative on error)
  4631. SeeAlso: AH=E6h,AX=FF00h,INT 6B/AH=01h
  4632. --------N-14E3-------------------------------
  4633. INT 14 - TelAPI - BUFFERED WRITE
  4634.     AH = E3h
  4635.     BX = connection ID
  4636.     CX = length of buffer in bytes
  4637.     ES:SI -> buffer containing data
  4638. Return: AX = number of characters actually written??? (negative on error)
  4639. SeeAlso: AH=07h"TelAPI",AH=E6h,AX=FF00h,INT 6B/AH=00h
  4640. --------N-14E4-------------------------------
  4641. INT 14 - TelAPI - CONNECTION CONTROL???
  4642.     AH = E4h
  4643.     BX = connection ID
  4644.     CX = ???
  4645.     ES:SI -> 10-byte buffer containing ???
  4646. Return: ???
  4647. SeeAlso: AH=A9h,AH=E6h,AX=FF00h,INT 6B/AX=0600h
  4648. --------N-14E5-------------------------------
  4649. INT 14 - TelAPI - ???
  4650.     AH = E5h
  4651. Return: AX = status???
  4652. SeeAlso: AH=E6h,AX=FF00h
  4653. --------N-14E6-------------------------------
  4654. INT 14 - TelAPI - ???
  4655.     AH = E6h
  4656. Return: AX = status???
  4657. Notes:    TelAPI also supports the NASI/NACS and NCSI APIs on INT 6B
  4658.     this function invokes AH=E5h internally
  4659. SeeAlso: AX=FF00h,INT 6B/AH=00h,INT 6B/AH=10h
  4660. --------N-14E7-------------------------------
  4661. INT 14 - TelAPI - GET ???
  4662.     AH = E7h
  4663.     ES:SI -> 20-byte buffer for ???
  4664. Return: AX = 0000h (successful)
  4665.     ES:SI buffer filled
  4666. SeeAlso: AX=FF00h
  4667. --------N-14E8-------------------------------
  4668. INT 14 - TelAPI - SET ???
  4669.     AH = E8h
  4670.     BX = connection ID
  4671.     CL = new value for ???
  4672.     DX = ??? (ignored by Novell TELAPI v4.01)
  4673. Return: AX = status (0000h,FFFFh)
  4674. SeeAlso: AX=FF00h
  4675. --------N-14E9-------------------------------
  4676. INT 14 - TelAPI - ???
  4677.     AH = E9h
  4678.     DX = ???
  4679. Return: ???
  4680. SeeAlso: AX=FF00h
  4681. --------N-14EA-------------------------------
  4682. INT 14 - TelAPI - GET CONNECTION INFO???
  4683.     AH = EAh
  4684.     BX = connection ID
  4685.     ES:SI -> buffer for info???
  4686. Return: AX = status (0000h,FFFFh,etc.)
  4687. SeeAlso: AX=FF00h
  4688. --------N-14EB-------------------------------
  4689. INT 14 - TelAPI - GET ???
  4690.     AH = EBh
  4691.     ES:SI -> buffer for ???
  4692. Return: ES:SI buffer filled
  4693. SeeAlso: AX=FF00h
  4694. --------N-14EC-------------------------------
  4695. INT 14 - TelAPI - ???
  4696.     AH = ECh
  4697.     BX = ???
  4698.     CX:DX = ???
  4699.     DS:DI -> ???
  4700.     ES:SI -> ???
  4701. Return: AX = status (0000h,FF37h,etc.)
  4702.     ES:SI -> ??? if ???
  4703.     ???
  4704. Note:    this function is not supported by the Microdyne TelAPI v3.7
  4705. SeeAlso: AH=E0h"TelAPI",AX=FF00h
  4706. --------N-14ED-------------------------------
  4707. INT 14 - TelAPI - ???
  4708.     AH = EDh
  4709.     BX = connection ID
  4710. Return: AX = status (0000h,FFFFh,etc.)
  4711. Note:    this function is not supported by the Microdyne TelAPI v3.7
  4712. SeeAlso: AX=FF00h
  4713. --------a-14F0F0-----------------------------
  4714. INT 14 - ASAP v1.0 - ???
  4715.     AX = F0F0h
  4716.     DX = ???
  4717.     ???
  4718. Return: ???
  4719. Program: ASAP (Automatic Screen Access Program) is a shareware screen reader by
  4720.       MicroTalk
  4721. SeeAlso: AX=F0F1h
  4722. --------a-14F0F1DX0000-----------------------
  4723. INT 14 - ASAP v1.0 - INSTALLATION CHECK
  4724.     AX = F0F1h
  4725.     DX = 0000h
  4726. Return: DX = segment of resident code
  4727.         0000h if not installed
  4728. Program: ASAP (Automatic Screen Access Program) is a shareware screen reader by
  4729.       MicroTalk
  4730. SeeAlso: AX=F0F0h,INT 10/AX=3800h
  4731. --------S-14F4FF-----------------------------
  4732. INT 14 - IBM/Yale EBIOS SERIAL I/O - INSTALLATION CHECK
  4733.     AX = F4FFh
  4734.     DX = port (00h-03h)
  4735. Return: CF clear if present
  4736.         AX = 0000h
  4737.     CF set if not present
  4738.         AX <> 0000h
  4739. SeeAlso: AH=36h"ComShare",AH=F9h,AH=FCh
  4740. --------S-14F9-------------------------------
  4741. INT 14 - IBM/Yale EBIOS SERIAL I/O - REGAIN CONTROL
  4742.     AH = F9h
  4743.     DX = port (00h-03h)
  4744. SeeAlso: AX=F4FFh
  4745. --------S-14FA-------------------------------
  4746. INT 14 - IBM/Yale EBIOS SERIAL I/O - SEND BREAK
  4747.     AH = FAh
  4748.     DX = port (00h-03h)
  4749. SeeAlso: AH=07h"MBBIOS",AH=1Ah,AH=8Ah
  4750. --------S-14FB-------------------------------
  4751. INT 14 - IBM/Yale EBIOS SERIAL I/O - SET OUTGOING MODEM SIGNALS
  4752.     AH = FBh
  4753.     AL = modem control register (see #0231 at AH=05h)
  4754.     DX = port (00h-03h)
  4755. SeeAlso: AH=05h"SERIAL"
  4756. --------S-14FC-------------------------------
  4757. INT 14 - IBM/Yale EBIOS SERIAL I/O - READ CHARACTER, NO WAIT
  4758.     AH = FCh
  4759.     DX = port (00h-03h)
  4760. Return: AH = RS232 status bits (see #0201 at AH=03h)
  4761.     AL = character
  4762. SeeAlso: AH=02h,AH=0Ch,AX=FF02h
  4763. --------S-14FD02-----------------------------
  4764. INT 14 - IBM/Yale EBIOS SERIAL I/O - READ STATUS
  4765.     AX = FD02h
  4766. Return: CX = number of characters available
  4767. --------N-14FF00-----------------------------
  4768. INT 14 - TelAPI - INSTALLATION CHECK
  4769.     AX = FF00h
  4770. Return: AL = FFh if installed
  4771.     AH = 00h for Novell TELAPI.EXE
  4772. SeeAlso: AH=E6h,AX=F4FFh
  4773. --------S-14FF01-----------------------------
  4774. INT 14 - IBM/Yale EBIOS SERIAL I/O - SET SEND BUFFER
  4775.     AX = FF01h
  4776.     CX = length of buffer (0000h to cancel buffer assignment)
  4777.     DX = port (00h-03h)
  4778.     ES:BX -> send buffer
  4779. SeeAlso: AH=18h,AH=83h"COURIERS",AH=A5h"BAPI",AH=FCh,AX=FF02h
  4780. --------S-14FF02-----------------------------
  4781. INT 14 - IBM/Yale EBIOS SERIAL I/O - SET RECEIVE BUFFER
  4782.     AX = FF02h
  4783.     CX = length of buffer (0000h to cancel buffer assignment)
  4784.     DX = port (00h-03h)
  4785.     ES:BX -> receive buffer
  4786. SeeAlso: AH=18h,AH=83h"COURIERS",AH=A5h"BAPI",AH=FCh,AX=FF03h
  4787. --------S-14FFF8-----------------------------
  4788. INT 14 - COMM-DRV v14.0 - SET BAUD RATE DIVISOR
  4789.     AX = FFF8h
  4790.     BX = card type (sub-device number)
  4791.     CX = new baudrate divisor
  4792.     DX = index to baud rate
  4793. Return: AH bit 7 set on error
  4794.     AH bit 7 clear if successful
  4795. Program: COMM-DRV is a universal serial communications driver by Willies'
  4796.       Computer Software Company, which supports standard INT 14 and
  4797.       FOSSIL calls as well as its own interfaces
  4798. SeeAlso: AX=8000h"COMM-DRV"
  4799. --------S-14FFFB-----------------------------
  4800. INT 14 - COMM-DRV v14.0 - GET HIGHEST ALLOWED PORT NUMBER
  4801.     AX = FFFBh
  4802.     DX = port number
  4803. Return: AH bit 7 set on error
  4804.     AH bit 7 clear if successful
  4805.         BX = highest port number
  4806. --------S-14FFFC-----------------------------
  4807. INT 14 - COMM-DRV v14.0 - GET INT 14 FLAGS
  4808.     AX = FFFCh
  4809.     DX = port number
  4810. Return: AH bit 7 set on error
  4811.     AH bit 7 clear if successful
  4812.         BX = flags (see #0293)
  4813. SeeAlso: AX=FFFDh
  4814.  
  4815. Bitfields for INT 14h flags:
  4816. Bit(s)    Description    (Table 0293)
  4817.  0    port active for INT 14h
  4818.  1    interface behaving like a FOSSIL driver
  4819. --------S-14FFFD-----------------------------
  4820. INT 14 - COMM-DRV v14.0 - SET INT 14 FLAGS
  4821.     AX = FFFDh
  4822.     BX = flags (see #0293)
  4823.     DX = port number
  4824. Return: AH bit 7 set on error
  4825.     AH bit 7 clear if successful
  4826. SeeAlso: AX=FFFCh
  4827. --------S-14FFFE-----------------------------
  4828. INT 14 - COMM-DRV v14.0 - RESTORE INT 14 VECTOR TO ORIGINAL
  4829.     AX = FFFEh
  4830. Return: AH bit 7 set on error
  4831.     AH bit 7 clear if successful
  4832. --------S-14FFFF-----------------------------
  4833. INT 14 - COMM-DRV v14.0 - GET INT 14 INFORMATION AREA
  4834.     AX = FFFFh
  4835.     BX:SI -> DWORD buffer for address of information area (see #0294)
  4836.           (initialized to zeros)
  4837. Return: BX:SI buffer filled with nonzero value if installed
  4838. Program: COMM-DRV is a universal serial communications driver by Willies'
  4839.       Computer Software Company, which supports standard INT 14 and
  4840.       FOSSIL calls as well as its own interfaces
  4841. Index:    installation check;COMM-DRV
  4842.  
  4843. Format of COMM-DRV information area:
  4844. Offset    Size    Description    (Table 0294)
  4845.  00h  8 BYTEs    signature "COMM-DRV"
  4846.  08h  2 BYTEs    00h,00h
  4847.  0Ah    DWORD    -> direct address mapping table
  4848.  0Eh    DWORD    previous INT 14 vector
  4849. --------t-15---------------------------------
  4850. INT 15 - Microsoft TSR Specification
  4851.     No additional information available at this time.
  4852. --------B-1500-------------------------------
  4853. INT 15 - CASSETTE - TURN ON TAPE DRIVE'S MOTOR (PC and PCjr only)
  4854.     AH = 00h
  4855. Return: CF set on error
  4856.         AH = 86h no cassette present
  4857.     CF clear if successful
  4858. SeeAlso: AH=01h"CASSETTE"
  4859. --------M-1500-------------------------------
  4860. INT 15 - Amstrad PC1512 - GET AND RESET MOUSE COUNTS
  4861.     AH = 00h
  4862. Return: CX = signed X count
  4863.     DX = signed Y count
  4864. --------O-1500-------------------------------
  4865. INT 15 - VMiX v2+ - INSTALLATION CHECK
  4866.     AH = 00h
  4867. Return: DX = 0798h if installed
  4868.         AX = version (AH = major, AL = minor)
  4869. --------T-1500-------------------------------
  4870. INT 15 - MultiDOS Plus - GIVE UP TIME SLICE
  4871.     AH = 00h
  4872. Note:    if issued by the highest-priority task while MultiDOS is using
  4873.       priority-based rather than round-robin scheduling, control will be
  4874.       returned to the caller immediately
  4875. SeeAlso: AH=03h"MultiDOS",AX=1000h
  4876. --------B-1501-------------------------------
  4877. INT 15 - CASSETTE - TURN OFF TAPE DRIVE'S MOTOR (PC and PCjr only)
  4878.     AH = 01h
  4879. Return: CF set on error
  4880.         AH = 86h no cassette present
  4881.     CF clear if successful
  4882. SeeAlso: AH=00h"CASSETTE"
  4883. --------b-1501-------------------------------
  4884. INT 15 - Amstrad PC1512 - WRITE DATA TO NON-VOLATILE RAM
  4885.     AH = 01h
  4886.     AL = NVRAM location (00h to 3Fh) (see #0295)
  4887.     BL = NVRAM data value
  4888. Return: AH = return code
  4889.         00h OK
  4890.         01h address bad
  4891.         02h write error
  4892. SeeAlso: AH=02h"Amstrad"
  4893.  
  4894. Format of Amstrad NVRAM:
  4895. Offset    Size    Description    (Table 0295)
  4896.  00h    BYTE    time of day: seconds
  4897.  01h    BYTE    alarm time: seconds
  4898.  02h    BYTE    time of day: minutes
  4899.  03h    BYTE    alarm time: minutes
  4900.  04h    BYTE    time of day: hours
  4901.  05h    BYTE    alarm time: hours
  4902.  06h    BYTE    day of week, 1 = Sunday
  4903.  07h    BYTE    day of month
  4904.  08h    BYTE    month
  4905.  09h    BYTE    year mod 100
  4906.  0Ah    BYTE    RTC status register A (see #0296)
  4907.  0Bh    BYTE    RTC status register B (see #0297)
  4908.  0Ch    BYTE    RTC status register C (read-only) (see #0298)
  4909.  0Dh    BYTE    RTC status register D
  4910.         bit 7: battery good
  4911.  0Eh  6 BYTEs    time and date machine last used
  4912.  14h    BYTE    user RAM checksum
  4913.  15h    WORD    Enter key scancode/ASCII code
  4914.  17h    WORD    Forward delete key scancode/ASCII code
  4915.  19h    WORD    Joystick fire button 1 scancode/ASCII code
  4916.  1Bh    WORD    Joystick fire button 2 scancode/ASCII code
  4917.  1Dh    WORD    mouse button 1 scancode/ASCII code
  4918.  1Fh    WORD    mouse button 2 scancode/ASCII code
  4919.  21h    BYTE    mouse X scaling factor
  4920.  22h    BYTE    mouse Y scaling factor
  4921.  23h    BYTE    initial VDU mode and drive count
  4922.  24h    BYTE    initial VDU character attribute
  4923.  25h    BYTE    size of RAM disk in 2K blocks
  4924.  26h    BYTE    initial system UART setup byte
  4925.  27h    BYTE    initial external UART setup byte
  4926.  28h 24 BYTEs    available for user application
  4927. Note:    bytes 00h-0Dh are the same on the IBM AT as they are used/updated by
  4928.       the clock chip
  4929.  
  4930. Bitfields for RTC status register A:
  4931. Bit(s)    Description    (Table 0296)
  4932.  7    set if date/time being updated
  4933.  6-4    time base speed, default 010 = 32768 Hz
  4934.  3-0    interrupt rate selection, default 0110 = 1024 Hz
  4935.  
  4936. Bitfields for RTC status register B:
  4937. Bit(s)    Description    (Table 0297)
  4938.  7    clear if normal update, set if abort update
  4939.  6    periodic interrupt enable
  4940.  5    alarm interrupt enable
  4941.  4    update end interrupt enable
  4942.  3    square wave enable
  4943.  2    date mode (clear = BCD, set = binary)
  4944.  1    24-hour format
  4945.  0    daylight saving time enable
  4946.  
  4947. Bitfields for RTC status register C:
  4948. Bit(s)    Description    (Table 0298)
  4949.  7    IRQF flag
  4950.  6    PF flag
  4951.  5    AF flag
  4952.  4    UF flag
  4953. --------O-1501-------------------------------
  4954. INT 15 - VMiX - "sys_chanreq" - I/O CHANNEL OBJECT MANAGER
  4955.     AH = 01h
  4956.     STACK:    WORD    object ID of requestor
  4957.         DWORD    pointer to ASCIZ name of requested method
  4958.             "assign" assign channel to object
  4959.             "deassign" deassign channel
  4960.             "cursor" set cursor on/off
  4961.             "init" initialize comm port
  4962.             "open" open I/O channel
  4963.             "position" set cursor position
  4964.             "receive" get buffered packet from comm port
  4965.             "send" send buffered packet to comm port
  4966.             "vio" set current virtual I/O to specified channel
  4967.             "window" make window at cursor position
  4968.         ---if "assign"---
  4969.          WORD    object UID
  4970.          WORD    caller UID/PID
  4971.          DWORD    CSL with port
  4972.         ---if "deassign"---
  4973.          WORD    channel ID
  4974.         ---if "cursor"---
  4975.          WORD    channel ID (must be a SRCSINK)
  4976.          WORD    new state (0000h off, 0001h on)
  4977.         ---if "init"---
  4978.          WORD    channel ID (must be a SRCSINK)
  4979.          WORD    comm port number (00h-03h)
  4980.          WORD    UART init code
  4981.         ---if "open"---
  4982.          WORD    channel ID
  4983.         ---if "position"---
  4984.          WORD    channel ID (must be a SRCSINK)
  4985.          WORD    position (high byte = row, low byte = column)
  4986.         ---if "receive"---
  4987.          DWORD    pointer to buffer
  4988.         ---if "send"---
  4989.          WORD    length of buffer
  4990.          DWORD    pointer to buffer
  4991.         ---if "vio"---
  4992.          WORD    channel ID (must be a SRCSINK)
  4993.         ---if "window"---
  4994.          WORD    top left (high byte = row, low byte = column)
  4995.          WORD    bottom right (high byte = row, low byte = column)
  4996. Return: DX:AX -> IRP structure or 0000h:0000h
  4997. SeeAlso: AH=00h"VMiX",AH=02h"VMiX"
  4998. --------T-1501-------------------------------
  4999. INT 15 - MultiDOS Plus - REQUEST RESOURCE SEMAPHORE
  5000.     AH = 01h
  5001.     AL = semaphore number (00h-3Fh)
  5002. Return: AH = status
  5003.         00h successful
  5004.         02h invalid semaphore number
  5005. Notes:    if the semaphore is not owned, ownership is assigned to the calling
  5006.       task and the call returns immediately
  5007.     if the semaphore is already owned by another task, the calling task
  5008.       is placed on a queue for the semaphore and suspended until it can
  5009.       become owner of the semaphore
  5010.     semaphore 0 is used internally by MultiDOS to synchronize DOS access
  5011. SeeAlso: AH=02h"MultiDOS",AH=10h"MultiDOS",AH=1Bh"MultiDOS"
  5012. --------B-1502-------------------------------
  5013. INT 15 - CASSETTE - READ DATA (PC and PCjr only)
  5014.     AH = 02h
  5015.     CX = number of bytes to read
  5016.     ES:BX -> buffer
  5017. Return: CF clear if successful
  5018.         DX = number of bytes read
  5019.         ES:BX -> byte following last byte read
  5020.     CF set on error
  5021.     AH = status (see #0299)
  5022. SeeAlso: AH=00h"CASSETTE",AH=03h"CASSETTE"
  5023.  
  5024. (Table 0299)
  5025. Values for Cassette status:
  5026.  00h    successful
  5027.  01h    CRC error
  5028.  02h    bad tape signals
  5029.  04h    no data
  5030.  80h    invalid command
  5031.  86h    no cassette present
  5032. --------b-1502-------------------------------
  5033. INT 15 - Amstrad PC1512 - READ DATA FROM NON-VOLATILE RAM
  5034.     AH = 02h
  5035.     AL = NVRAM location (00h to 3Fh)
  5036. Return: AH = return code
  5037.         00h OK
  5038.         01h address bad
  5039.         02h checksum error
  5040.     AL = NVRAM data value
  5041. SeeAlso: AH=01h"Amstrad"
  5042. --------O-1502-------------------------------
  5043. INT 15 - VMiX - "sys_memreq" - MEMORY OBJECT MANAGER
  5044.     AH = 02h
  5045.     STACK:    WORD    object ID of requestor
  5046.         DWORD    pointer to ASCIZ name of requested method
  5047.             "assign" allocate low memory block
  5048.             "assign extended" allocate extended memory pages
  5049.             "assign gdt" allocate GDT selector
  5050.             "paged" allocate low paged memory
  5051.             "paged extended" alllocate extended memory pages
  5052.             "deassign" free memory block
  5053.             "deassign gdt" free GDT selector
  5054.             "getvpage" get physical address for virtual page
  5055.             "setvpage" set physical address for virtual page
  5056.             "info" get VMiX memory usage info block
  5057.             "move" move contents of 32-bit memory
  5058.             "newmcb" make new DOS memory control block
  5059.             "owner" get process ID of MCB or PSP owner
  5060.             "umb" allocate upper memory block
  5061.             "video" toggle system use of vidoe memory and get stat
  5062.         ---if "assign"---
  5063.          WORD    number of objects
  5064.          WORD    size in bytes (multiple of 512 bytes)
  5065.         ---if "assign extended"---
  5066.          WORD    number of objects
  5067.          WORD    size in bytes (multiple of 4K)
  5068.         ---if "assign gdt"---
  5069.          WORD    access type (low byte)
  5070.          WORD    segment size in paragraphs
  5071.          DWORD    pointer to start of physical segment
  5072.         ---if "paged"---
  5073.          WORD    number of 512-byte pages
  5074.         ---if "paged extended"
  5075.          WORD    number of 4K pages
  5076.         ---if "deassign"---
  5077.          DWORD    pointer returned by previous allocation call
  5078.         ---if "deassign gdt"---
  5079.          WORD    GDT selector
  5080.         ---if "getvpage"---
  5081.          WORD    owner's process ID
  5082.          DWORD    pointer to buffer for page structure (struct VPGE)
  5083.         ---if "setvpage"---
  5084.          WORD    owner's process ID
  5085.          DWORD    pointer to new page structure (struct VPGE)
  5086.         ---if "info"---
  5087.          no additional arguments
  5088.         ---if "move"
  5089.          DWORD    32-bit source address
  5090.          DWORD    32-bit destination address
  5091.          WORD    number of words to move
  5092.         ---if "newmcb"---
  5093.          DWORD    pointer to new MCB's location
  5094.          WORD    size of memory block
  5095.          DWORD    pointer to ASCIZ name string (max 8 chars)
  5096.         ---if "owner"---
  5097.          WORD    MCB or PSP segment
  5098.         ---if "umb"---
  5099.          WORD    size in paragraphs
  5100.         ---if "video"---
  5101.          no additional arguments
  5102. Return: DX:AX -> memory block or VPGE struct or 0000h:0000h
  5103. SeeAlso: AH=00h"VMiX",AH=01h"VMiX"
  5104. --------T-1502-------------------------------
  5105. INT 15 - MultiDOS Plus - RELEASE RESOURCE SEMAPHORE
  5106.     AH = 02h
  5107.     AL = semaphore number (00h-3Fh)
  5108. Return: AH = status
  5109.         00h successful
  5110.         01h not semaphore owner
  5111.         02h invalid semaphore number
  5112. Notes:    if any tasks are waiting for the semaphore, the first task on the wait
  5113.       queue will become the new owner and be reawakened
  5114.     do not use within an interrupt handler
  5115. SeeAlso: AH=01h"MultiDOS",AH=10h"MultiDOS",AH=1Ch"MultiDOS"
  5116. --------B-1503-------------------------------
  5117. INT 15 - CASSETTE - WRITE DATA (PC and PCjr only)
  5118.     AH = 03h
  5119.     CX = number of bytes to write
  5120.     ES:BX -> data buffer
  5121. Return: CF clear if successful
  5122.         ES:BX -> byte following last byte written
  5123.     CF set on error
  5124.     AH = status (see #0299)
  5125.     CX = 0000h
  5126. SeeAlso: AH=00h"CASSETTE",AH=02h"CASSETTE"
  5127. --------V-1503-------------------------------
  5128. INT 15 - Amstrad PC1512 - WRITE VDU COLOR PLANE WRITE REGISTER
  5129.     AH = 03h
  5130.     AL = value (I,R,G,B bits)
  5131. SeeAlso: AH=04h"Amstrad"
  5132. --------O-1503-------------------------------
  5133. INT 15 - VMiX - "sys_pinput" - PROMPTED CONSOLE INPUT
  5134.     AH = 03h
  5135.     STACK:    DWORD    pointer to ASCII prompt
  5136.         WORD    field outline character
  5137.         WORD    length of input field (max 7Fh)
  5138.         DWORD    address of pointer to input buffer
  5139. Return: AX = length of input (input buffer is padded with blanks)
  5140. SeeAlso: AH=04h"VMiX"
  5141. --------T-1503-------------------------------
  5142. INT 15 - MultiDOS Plus - SUSPEND TASK FOR INTERVAL
  5143.     AH = 03h
  5144.     DX = number of time slices to remain suspended
  5145. Return: after specified interval has elapsed
  5146. Note:    when priority-based scheduling is in use, high-priority tasks should
  5147.       use this function to yield the processor
  5148. SeeAlso: AH=00h"MultiDOS",AH=0Ah"MultiDOS"
  5149. --------B-1504-------------------------------
  5150. INT 15 - SYSTEM - BUILD ABIOS SYSTEM PARAMETER TABLE (PS)
  5151.     AH = 04h
  5152.     ES:DI -> 32-byte results buffer for System Parameter Table (see #0300)
  5153.     DS = segment containing ABIOS RAM extensions (zero if none)
  5154. Return: CF clear if successful
  5155.         AH = 00h success
  5156.         ES:DI buffer filled
  5157.         AL destroyed
  5158.     CF set on failure
  5159.         AX destroyed
  5160.         AH = 80h/86h if not supported
  5161. SeeAlso: AH=05h"ABIOS",AH=C1h
  5162.  
  5163. Format of ABIOS System Parameter Table:
  5164. Offset    Size    Description    (Table 0300)
  5165.  00h    DWORD    FAR address of ABIOS Common Start Routine
  5166.  04h    DWORD    FAR address of ABIOS Interrupt Routine
  5167.  08h    DWORD    FAR address of ABIOS Time-out Routine
  5168.  0Ch    WORD    number of bytes of stack required by this ABIOS implementation
  5169.  0Eh 16 BYTEs    reserved
  5170.  1Eh    WORD    number of entries in initialization table
  5171. --------V-1504-------------------------------
  5172. INT 15 - Amstrad PC1512 - WRITE VDU COLOR PLANE READ REGISTER
  5173.     AH = 04h
  5174.     AL = value (RDSEL1 and RDSEL0)
  5175. SeeAlso: AH=03h"Amstrad",05h"Amstrad"
  5176. --------O-1504-------------------------------
  5177. INT 15 - VMiX - "sys_vprintf" - FORMATTED OUTPUT TO STREAM
  5178.     AH = 04h
  5179.     STACK:    DWORD    control string
  5180.         DWORD    array of arguments
  5181. SeeAlso: AH=03h"VMiX"
  5182. --------T-1504-------------------------------
  5183. INT 15 - MultiDOS Plus - SEND MESSAGE TO ANOTHER TASK
  5184.     AH = 04h
  5185.     AL = mailbox number (00h-3Fh)
  5186.     CX = message length in bytes
  5187.     DS:SI -> message
  5188. Return: AH = status
  5189.         00h successful
  5190.         01h out of message memory
  5191.         02h invalid mailbox number
  5192. Note:    the message is copied into a system buffer; the caller may immediately
  5193.       reuse its buffer
  5194. SeeAlso: AH=05h"MultiDOS"
  5195. --------B-1505-------------------------------
  5196. INT 15 - SYSTEM - BUILD ABIOS INITIALIZATION TABLE (PS)
  5197.     AH = 05h
  5198.     ES:DI -> results buffer of length 18h * Number_of_Entries (see #0301)
  5199.     DS = segment containing ABIOS RAM extensions (zero if none)
  5200. Return: CF clear if successful
  5201.         AH = 00h success
  5202.         ES:DI buffer filled
  5203.         AL destroyed
  5204.     CF set on failure
  5205.         AX destroyed
  5206.         AH = 80h/86h if not supported
  5207. SeeAlso: AH=04h"ABIOS",AH=C1h
  5208.  
  5209. Format of one entry of ABIOS Initialization Table:
  5210. Offset    Size    Description    (Table 0301)
  5211.  00h    WORD    device ID (see #0302)
  5212.  02h    WORD    number of Logical IDs
  5213.  04h    WORD    Device Block length (zero for ABIOS patch or extension)
  5214.  06h    DWORD    -> init routine for Device Block and Function Transfer Table
  5215.  0Ah    WORD    request block length
  5216.  0Ch    WORD    Function Transfer Table length (zero for a patch)
  5217.  0Eh    WORD    Data Pointers length (in Common Data Area)
  5218.  10h    BYTE    secondary device ID (hardware level this ABIOS ver supports)
  5219.  11h    BYTE    revision (device driver revision level this ABIOS supports)
  5220.  12h  6 BYTEs    reserved
  5221.  
  5222. (Table 0302)
  5223. Values for ABIOS device ID:
  5224.  00h    ABIOS internal calls
  5225.  01h    floppy disk
  5226.  02h    hard disk
  5227.  03h    video
  5228.  04h    keyboard
  5229.  05h    parallel port
  5230.  06h    serial port
  5231.  07h    system timer
  5232.  08h    real-time clock
  5233.  09h    system services
  5234.  0Ah    NMI
  5235.  0Bh    mouse
  5236.  0Eh    CMOS RAM
  5237.  0Fh    DMA
  5238.  10h    Programmable Option Select (POS)
  5239.  16h    keyboard password
  5240. --------V-1505-------------------------------
  5241. INT 15 - Amstrad PC1512 - WRITE VDU GRAPHICS BORDER REGISTER
  5242.     AH = 05h
  5243.     AL = value (I,R,G,B bits)
  5244. SeeAlso: AH=04h"Amstrad"
  5245. --------O-1505-------------------------------
  5246. INT 15 - VMiX - "sys_getpid" - GET PROCESS ID OF CURRENT PROCESS
  5247.     AH = 05h
  5248. Return: AX = process ID
  5249. SeeAlso: AH=06h"VMiX",AH=0Bh"VMiX"
  5250. --------T-1505-------------------------------
  5251. INT 15 - MultiDOS Plus - CHECK MAILBOX
  5252.     AH = 05h
  5253.     AL = mailbox number (00h-3Fh)
  5254. Return: AH = status
  5255.         00h successful
  5256.         DX = length of first message in queue, 0000h if no message
  5257.         02h invalid mailbox number
  5258. SeeAlso: AH=04h"MultiDOS",AH=06h"MultiDOS"
  5259. --------b-1506-------------------------------
  5260. INT 15 - Amstrad PC1512 - GET ROS VERSION NUMBER
  5261.     AH = 06h
  5262. Return: BX = version number
  5263. --------O-1506-------------------------------
  5264. INT 15 - VMiX - "sys_getpcb" - GET POINTER TO PROCESS CONTROL BLOCK
  5265.     AH = 06h
  5266.     STACK:    WORD    process ID
  5267. Return: DX:AX -> process control block
  5268. SeeAlso: AH=05h"VMiX",AH=07h"VMiX",AH=08h"VMiX"
  5269. --------T-1506-------------------------------
  5270. INT 15 - MultiDOS Plus - READ MAILBOX
  5271.     AH = 06h
  5272.     AL = mailbox number (00h-3Fh)
  5273.     CX = size of buffer in bytes
  5274.     ES:DI -> buffer for message
  5275. Return: AH = status
  5276.         00h successful
  5277.         CX = number of bytes copied
  5278.         DX = actual length of message
  5279.         02h invalid mailbox number
  5280. Note:    if the caller's buffer is not large enough, the message is truncated
  5281.       and the remainder is lost
  5282. SeeAlso: AH=04h"MultiDOS",AH=05h"MultiDOS"
  5283. --------O-1507-------------------------------
  5284. INT 15 - VMiX - "sys_getocb" - GET POINTER TO OBJECT CONTROL BLOCK
  5285.     AH = 07h
  5286.     STACK:    WORD    object type
  5287. Return: DX:AX -> object control block
  5288. SeeAlso: AH=06h"VMiX",AH=08h"VMiX"
  5289. --------T-1507-------------------------------
  5290. INT 15 - MultiDOS Plus - SPAWN INTERNAL TASK (CREATE NEW THREAD)
  5291.     AH = 07h
  5292.     BX:CX = entry point of new task
  5293.     DX = stack size in paragraphs
  5294. Return: AH = status
  5295.         00h successful
  5296.         01h no free task control blocks
  5297.         02h no free memory for task's stack
  5298. Note:    execution returns immediately to calling task
  5299. SeeAlso: AH=08h"MultiDOS",AH=09h"MultiDOS",AH=13h"MultiDOS"
  5300. --------O-1508-------------------------------
  5301. INT 15 - VMiX - "sys_getccb" - GET CHANNEL CONTROL BLOCK
  5302.     AH = 08h
  5303.     STACK:    WORD    channel ID
  5304. Return: DX:AX -> channel control block
  5305. SeeAlso: AH=06h"VMiX",AH=07h"VMiX"
  5306. --------T-1508-------------------------------
  5307. INT 15 - MultiDOS Plus - TERMINATE INTERNAL TASK (KILL THREAD)
  5308.     AH = 08h
  5309. Return: calling task terminated, so execution never returns to caller
  5310. Notes:    an internal task must be terminated with this function rather than a
  5311.       DOS termination function
  5312.     task's stack space is returned to parent task's memory pool
  5313. SeeAlso: AH=07h"MultiDOS"
  5314. --------O-1509-------------------------------
  5315. INT 15 - VMiX - "sys_getqueue" - GET ID OF QUEUED ELEMENT
  5316.     AH = 09h
  5317.     STACK:    WORD    queue ID (0 = process queue, 1 = object, 3 = type)
  5318.         WORD    subqueue ID
  5319. Return: AX = queue ID
  5320. SeeAlso: AH=0Ah"VMiX"
  5321. --------T-1509-------------------------------
  5322. INT 15 - MultiDOS Plus - CHANGE TASK'S PRIORITY
  5323.     AH = 09h
  5324.     AL = new priority
  5325. Note:    the priority has different meanings depending on whether priority-
  5326.       based or round-robin scheduling is used
  5327. SeeAlso: AH=07h"MultiDOS"
  5328. --------O-150A-------------------------------
  5329. INT 15 - VMiX - "sys_qetqnext" - GET ID OF NEXT QUEUED ELEMENT
  5330.     AH = 0Ah
  5331.     STACK:    WORD    queue ID (0 = process queue, 1 = object, 3 = type)
  5332.         WORD    ID of current element in queue chain
  5333. Return: AX = ID of next element
  5334. SeeAlso: AH=09h"VMiX",AH=0Fh"VMiX"
  5335. --------T-150A-------------------------------
  5336. INT 15 - MultiDOS Plus - CHANGE TIME SLICE INTERVAL
  5337.     AH = 0Ah
  5338.     AL = new interval
  5339.         00h = 55.0 ms (default)
  5340.         80h = 27.5 ms
  5341.         40h = 13.75 ms
  5342.         20h = 6.88 ms
  5343.         10h = 3.44 ms
  5344.         08h = 1.72 ms
  5345. SeeAlso: AH=03h"MultiDOS"
  5346. --------O-150B-------------------------------
  5347. INT 15 - VMiX - "sys_sysreq" - SYSTEM CONFIGURATION MANAGER
  5348.     AH = 0Bh
  5349.     STACK:    WORD    caller's UID
  5350.         DWORD    pointer to ASCIZ name of requested method
  5351.             "abort" abort current send/receive on comm port
  5352.             "block" start/end critical section
  5353.             "close" terminate interrupt-drive comm I/O
  5354.             "open" prepare comm port for interrupt-driven I/O
  5355.             "delay" set delay timer and wait
  5356.             "hibernate" put process to sleep
  5357.             "ints" enable/disable interrupt-driven INT 14h
  5358.             "length" get current send/receive buffer offsets
  5359.             "kswitch" switch stacks
  5360.             "numproc" get number of active processes
  5361.             "protocol" set protocol function for comm interrupts
  5362.             "relocate" set/reset VMiX flag for relocating to himem
  5363.             "status" get current open comm port status
  5364.             "wake" awaken a process
  5365.             "xport" get comm port polled for logins
  5366.         ---if "abort"---
  5367.          no additional arguments
  5368.         ---if "block"---
  5369.          WORD    0000h end, 0001h start
  5370.         ---if "close"---
  5371.          no additional arguments
  5372.         ---if "open"---
  5373.          WORD    comm port (00h-03h)
  5374.          WORD    BIOS parameter byte (see #0197 at INT 14/AH=00h),
  5375.             except bits 7-5: 000 = 19200, 001 = 38400, 011 = 115200
  5376.         ---if "delay"---
  5377.          WORD    time in seconds
  5378.         ---if "hibernate"---
  5379.          WORD    process ID
  5380.         ---if "ints"---
  5381.          WORD    0000h if no, 0001h if yes
  5382.         ---if "length","numproc","relocate","status","xport"---
  5383.          no additional arguments
  5384.         ---if "kswitch"---
  5385.          DWORD    pointer to new stack
  5386.         ---if "protocol"---
  5387.          DWORD    pointer to function (must be in low "assign"ed memory
  5388.             when in 386 mode)
  5389.         ---if "wake"---
  5390.          WORD    process ID
  5391. Return: DX:AX -> result or 0000h:0000h
  5392.         ---if "length"---
  5393.          BYTE    receive offset
  5394.          BYTE    send offset
  5395.         ---if "kswitch"---
  5396.          DWORD    old stack pointer
  5397.         ---if "numproc"---
  5398.          WORD    number of active processes
  5399.         ---if "status"---
  5400.          current open comm port status
  5401.         ---if "xport"---
  5402.          current comm port being polled for logins
  5403. Note:    the "delay" command reportedly disables the keyboard until the delay
  5404.       completes
  5405. SeeAlso: AH=05h"VMiX",AH=0Eh"VMiX"
  5406. --------T-150B-------------------------------
  5407. INT 15 - MultiDOS Plus - FORCE DISPLAY OUTPUT TO PHYSICAL SCREEN MEMORY
  5408.     AH = 0Bh
  5409. Notes:    sets calling task's screen pointer to actual screen memory; the pointer
  5410.       may be restored with AH=0Ch
  5411.     caller's video mode must be same as foreground task's video mode
  5412.     any text written while in the background will be saved to the
  5413.       foreground task's virtual screen when it switches to the background
  5414.     useful if a background task wants to display a message on the
  5415.       foreground screen
  5416. SeeAlso: AH=0Ch"MultiDOS"
  5417. --------O-150C-------------------------------
  5418. INT 15 - VMiX - "sys_getstack" - GET POINTER TO PROCESS TSS STACK
  5419.     AH = 0Ch
  5420.     STACK:    WORD    process ID
  5421. Return: DX:AX -> TSS stack store
  5422. SeeAlso: AH=00"VMiX"
  5423. --------T-150C-------------------------------
  5424. INT 15 - MultiDOS Plus - RESTORE OLD VIDEO DISPLAY MEMORY
  5425.     AH = 0Ch
  5426. Note:    restores task's screen pointer saved by AH=0Bh; must not be called
  5427.       unless AH=0Bh has been called first
  5428. SeeAlso: AH=0Bh"MultiDOS"
  5429. --------O-150D-------------------------------
  5430. INT 15 - VMiX - "sys_spawn" - START A CHILD PROCESS JOB SHELL
  5431.     AH = 0Dh
  5432.     STACK:    DWORD    ASCIZ string starting with requested I/O channel and
  5433.             followed by standard VMiX shell command string
  5434. Return: AX = process ID or error code "SYS_ERROR"
  5435. Note:    the maximum string length is 7Fh characters
  5436. SeeAlso: AH=0Eh"VMIX",AH=11h"VMiX",INT 21/AH=4Bh
  5437. --------T-150D-------------------------------
  5438. INT 15 - MultiDOS Plus - DISABLE MULTITASKING
  5439.     AH = 0Dh
  5440. Note:    calling task receives all time slices until AH=0Eh is called; this
  5441.       allows time-critical events or nonreentrant code to be processed
  5442. SeeAlso: AH=0Eh"MultiDOS",AH=10h"MultiDOS",AX=101Bh,AH=20h"MultiDOS"
  5443. --------O-150E-------------------------------
  5444. INT 15 - VMiX - "sys_kill" - HARD TERMINATE PROCESS
  5445.     AH = 0Eh
  5446.     STACK:    WORD    process ID
  5447. Return: AX = status (SYS_OK or SYS_ERROR)
  5448. SeeAlso: AH=0Bh"VMiX",AH=0Dh"VMIX"
  5449. --------T-150E-------------------------------
  5450. INT 15 - MultiDOS Plus - ENABLE MULTITASKING
  5451.     AH = 0Eh
  5452. SeeAlso: AH=0Dh"MultiDOS",AX=101Ch,AH=20h"MultiDOS"
  5453. --------d-150F-------------------------------
  5454. INT 15 C - SYSTEM - FORMAT UNIT PERIODIC INTERRUPT (PS ESDI drives only)
  5455.     AH = 0Fh
  5456.     AL = phase code
  5457.         00h reserved
  5458.         01h surface analysis
  5459.         02h formatting
  5460. Return: CF clear if formatting should continue
  5461.     CF set if formatting should terminate
  5462. Note:    called during ESDI drive formatting after each cylinder is completed
  5463. SeeAlso: INT 13/AH=1Ah
  5464. --------O-150F-------------------------------
  5465. INT 15 - VMiX - "sys_getqkey" - GET KEY FIELD OF QUEUED ELEMENT
  5466.     AH = 0Fh
  5467.     STACK:    WORD    queue ID (0 = process queue, 1 = object q, 3 = type q)
  5468.         WORD    ID of element in queue chain
  5469. Return: AX = key
  5470. SeeAlso: AH=0Ah"VMiX"
  5471. --------T-150F-------------------------------
  5472. INT 15 - MultiDOS Plus - EXECUTE A MULTIDOS PLUS COMMAND
  5473.     AH = 0Fh
  5474.     DS:BX -> ASCIZ command
  5475. Return: after command has been processed
  5476. Notes:    specified string is executed as if it had been typed at the MultiDOS
  5477.       command prompt
  5478.     the task is placed on a queue which MultiDOS examines periodically and
  5479.       is suspended until MultiDOS has processed the command
  5480.     all lowercase characters up to the first blank are converted to upper
  5481.       case within the given buffer
  5482. --------O-1510-------------------------------
  5483. INT 15 - VMiX - "sys_virtual" - EXECUTE CONFORMING FUNCTION IN PROTECTED MODE
  5484.     AH = 10h
  5485.     STACK:    DWORD    pointer to function
  5486.           N WORDs    function args
  5487. Return: AX = function's return value??? (not specified in documentation)
  5488. Note:    while the function is executing, the following global descriptors are
  5489.       available:
  5490.         20h stack segment
  5491.         38h code segment of function
  5492.         40h data alias for function's code segment
  5493.       additional GDT descriptors can be allocated using AH=02h with
  5494.       function "assign gdt"
  5495. SeeAlso: AH=02h"VMiX",AH=51h"VMiX"
  5496. --------T-1510-------------------------------
  5497. INT 15 - MultiDOS Plus - TEST RESOURCE SEMAPHORE
  5498.     AH = 10h
  5499.     AL = semaphore number (00h-3Fh)
  5500. Return: AH = status
  5501.         00h semaphore not in use
  5502.         01h semaphore owned by another task
  5503.         02h invalid semaphore number
  5504.         03h semaphore owned by caller
  5505. SeeAlso: AH=02h"MultiDOS",AH=0Dh"MultiDOS",AH=1Dh"MultiDOS"
  5506. --------Q-151000-----------------------------
  5507. INT 15 - TopView - "PAUSE" - GIVE UP CPU TIME
  5508.     AX = 1000h
  5509. Return: after other processes run
  5510. Note:    under DESQview, if the process issuing this call has hooked INT 08h,
  5511.       the current time-slice is set to expire at the next clock tick rather
  5512.       than immediately
  5513. SeeAlso: AH=00h"MultiDOS",AX=5305h,INT 21/AH=89h,INT 21/AH=EEh"DoubleDOS"
  5514. SeeAlso: INT 2F/AX=1680h,INT 60/DI=0106h,INT 62/AH=01h,INT 6F/AH=2Ah"F_YIELD"
  5515. SeeAlso: INT 7A/BX=000Ah,INT 7F/AH=02h"MultiLink",INT 7F/AH=E8h
  5516. --------Q-151001-----------------------------
  5517. INT 15 - TopView - "GETMEM" - ALLOCATE "SYSTEM" MEMORY
  5518.     AX = 1001h
  5519.     BX = number of bytes to allocate
  5520. Return: ES:DI -> block of memory or 0000h:0000h (DV v2.26+)
  5521.     AX = status (DV v2.42)
  5522.         0000h successful
  5523.         0001h failed
  5524. Note:    use SETERROR (AX=DE15h) to avoid a user prompt if there is insufficient
  5525.       common memory.  Under DV v2.42, this call never generates a user
  5526.       prompt regardless of the SETERROR value; instead, it always returns
  5527.       AX=0001h and ES:DI=0000h:0000h if out of memory
  5528. SeeAlso: AX=1002h,AX=102Eh,AX=DE0Ch,AX=DE15h
  5529. --------Q-151002-----------------------------
  5530. INT 15 - TopView - "PUTMEM" - DEALLOCATE "SYSTEM" MEMORY
  5531.     AX = 1002h
  5532.     ES:DI -> previously allocated block
  5533. Return: block freed
  5534. SeeAlso: AX=1001h,AX=DE0Dh
  5535. --------Q-151003-----------------------------
  5536. INT 15 - TopView - "PRINTC" - DISPLAY CHARACTER/ATTRIBUTE ON SCREEN
  5537.     AX = 1003h
  5538.     BH = attribute
  5539.     BL = character
  5540.     DX = segment of object handle for window
  5541. Note:    BX=0 does not display anything, it only positions the hardware cursor
  5542. --------Q-1510-------------------------------
  5543. INT 15 - TopView - UNIMPLEMENTED IN DV 2.x
  5544.     AH = 10h
  5545.     AL = 04h thru 12h
  5546. Return: pops up "Programming error" window in DV 2.x
  5547. --------Q-151013-----------------------------
  5548. INT 15 - TopView - "GETBIT" - DEFINE A 2ND-LEVEL INTERRUPT HANDLER
  5549.     AX = 1013h
  5550.     ES:DI -> FAR service routine
  5551. Return: BX = bit mask indicating which bit was allocated
  5552.          0000h if no more bits available
  5553. SeeAlso: AX=1014h,AX=1015h
  5554. Note:    only a few TopView/DESQview API calls are allowed during a hardware
  5555.       interrupt; if other calls need to be made, the interrupt handler
  5556.       must schedule a 2nd-level interrupt with "SETBIT" (AX=1015h)
  5557. --------Q-151014-----------------------------
  5558. INT 15 - TopView - "FREEBIT" - UNDEFINE A 2ND-LEVEL INTERRUPT HANDLER
  5559.     AX = 1014h
  5560.     BX = bit mask from INT 15/AX=1013h
  5561. SeeAlso: AX=1013h,AX=1015h
  5562. --------Q-151015-----------------------------
  5563. INT 15 - TopView - "SETBIT" - SCHEDULE ONE OR MORE 2ND-LEVEL INTERRUPTS
  5564.     AX = 1015h
  5565.     BX = bit mask for interrupts to post
  5566. Return: indicated routines will be called: (DV 2.0x) at next task switch
  5567.                        (DV 2.2x) immediately on return from
  5568.                              hardware interrupt
  5569. SeeAlso: AX=1013h,AX=1014h
  5570. Notes:    this is one of the few TopView calls which are allowed from a hardware
  5571.       interrupt handler
  5572.     the handler will be called with ES containing the segment of the handle
  5573.       of the next task to be executed; on return, ES must be the segment of
  5574.       a task handle
  5575. --------Q-151016-----------------------------
  5576. INT 15 - TopView - "ISOBJ" - VERIFY OBJECT HANDLE
  5577.     AX = 1016h
  5578.     ES:DI = possible object handle
  5579. Return: BX = status
  5580.         FFFFh if ES:DI is a valid object handle (see #0304)
  5581.         0000h if ES:DI is not
  5582. Note:    under DESQview versions prior to 2.50, an object handle is always a
  5583.       pointer to the object; for versions 2.50 and up, only task handles
  5584.       are always pointers--other handles may consist of a unique object
  5585.       number and offset into DESQview's common memory (see #0313)
  5586. SeeAlso: AX=DE14h,AX=DE2Bh,AX=DE2Ch
  5587.  
  5588. (Table 0303)
  5589. Values for DESQview object type:
  5590.  00h    window/task
  5591.  01h    mailbox
  5592.  02h    keyboard
  5593.  03h    timer
  5594.  04h    pointer
  5595.  05h    panel
  5596.  06h    objectq
  5597.  
  5598. Format of DESQview object:
  5599. Offset    Size    Description    (Table 0304)
  5600.  00h    WORD    offset in common memory of previous object of same type
  5601.  02h    WORD    offset in common memory of next object of same type
  5602.  04h    WORD    signature FEDCh (DV 2.42-)
  5603.         signature FEDCh or object number (DV 2.50+)
  5604.  06h    WORD    object type (see #0303)
  5605.  08h    DWORD    object handle to return to caller
  5606.  0Ch    DWORD    canonicalized object address (segment = common memory)
  5607.  10h    WORD    offset in common memory of owning task
  5608.         (0000h for unowned OBJECTQs)
  5609.  12h    WORD    mapping context
  5610.         offset in common memory of mapping context record (see #0306)
  5611.     remainder varies by object type and DESQview version
  5612. ---v2.42 keyboard object---
  5613.  14h    WORD    flag bits (see also AH=12h/BH=0Ah"OBJECT")
  5614.         bit 15: keyboard opened
  5615.  16h  4 BYTEs    ???
  5616.  1Ah    WORD    priority in OBJECTQ???
  5617.  1Ch    ...
  5618.  25h    WORD    offset in common memory of ??? task
  5619.  27h  4 BYTEs    ???
  5620. ---v2.42 objectq object---
  5621.  14h    WORD    flag bits (see also AH=12h/BH=0Ah"OBJECT")
  5622.         bit 15: OBJECTQ opened
  5623.  16h  2 BYTEs    ???
  5624.  18h    WORD    offset in common memory of ??? task
  5625.  1Ah  6 BYTEs    ???
  5626. ---v2.42 mailbox object---
  5627.  14h    WORD    flag bits (see also AH=12h/BH=0Ah"OBJECT")
  5628.         bit 15: mailbox opened
  5629.  1Ah    WORD    priority in OBJECTQ???
  5630.  1Ch  6 BYTEs    ???
  5631.  22h    WORD    offset in common memory of mailbox name (counted string)
  5632.         0000h if no name
  5633.      <= 5 BYTEs ???
  5634. ---v2.22-2.42,2.52,2.60 window/task object---
  5635.  14h    BYTE    00h window, 01h task
  5636.  15h    BYTE    internal (not Switch menu) window number???
  5637.  16h    BYTE    internal (not Switch menu) window number???
  5638.  17h    WORD    segment of internal window record (see #0307)
  5639.  19h  2 BYTEs    ???
  5640.  1Bh    BYTE    cursor row
  5641.  1Ch    BYTE    cursor column
  5642.  1Dh    BYTE    visible window origin, row
  5643.  1Eh    BYTE    visible window origin, column
  5644.  1Fh    BYTE    window height (logical)
  5645.  20h    BYTE    window width (logical)
  5646.  21h    BYTE    window position, row
  5647.  22h    BYTE    window position, column
  5648.  23h    BYTE    window height (visible)
  5649.  24h    BYTE    window width (visible)
  5650.  25h    BYTE    row of top of frame (or window if unframed)
  5651.  26h    BYTE    column of left of frame (or window if unframed)
  5652.  27h    BYTE    window height (physical, including frame)
  5653.  28h    BYTE    window width (physical, including frame)
  5654.  29h    BYTE    unzoomed visible origin, row (00h before first zoom)
  5655.  2Ah    BYTE    unzoomed visible origin, column (00h before first zoom)
  5656.  2Bh    BYTE    unzoomed window position, row (00h before first zoom)
  5657.  2Ch    BYTE    unzoomed window position, column (00h before first zoom)
  5658.  2Dh    BYTE    unzoomed window height (00h before first zoom)
  5659.  2Eh    BYTE    unzoomed window width (00h before first zoom)
  5660.         unzoomed parameters above are updated when window is zoomed
  5661.           to full screen
  5662.  2Fh    BYTE    ??? initially logical window height
  5663.  30h    BYTE    ??? initially logical window width
  5664.  31h  2 BYTEs    ???
  5665.  33h    BYTE    minimum height of window
  5666.  34h    BYTE    minimum width of window
  5667.  35h    BYTE    maximum height of window
  5668.  36h    BYTE    maximum width of window
  5669.  37h  3 BYTEs    ???
  5670.  3Ah  8 BYTEs    window frame characters: ul,ur,ll,lr,t,b,l,r
  5671.  42h 24 BYTEs    attributes???
  5672.  5Ah  8 BYTEs    window frame characters: ul,ur,ll,lr,t,b,l,r
  5673.  62h  3 BYTEs    ???
  5674.  65h    BYTE    ??? bitflags
  5675.  66h    BYTE    bit 0: window is zoomed
  5676.  67h    BYTE    ???
  5677.  68h    WORD    offset in common memory of window name or 0000h if untitled
  5678.  6Ah    WORD    length of window name
  5679.  6Ch  2 BYTEs    ???
  5680.  6Eh    WORD    offset of logical cursor in window (in character cells)
  5681.  70h    DWORD    pointer to field table for window
  5682.  74h    BYTE    ???
  5683.  75h  2 BYTEs    ???
  5684.  77h    BYTE    number of last-visited field
  5685.  78h    DWORD    pointer to field table entry for last-visited field
  5686.  7Ch  3 BYTEs    ???
  5687.  7Fh    BYTE    select field marker character
  5688.  80h    BYTE    ??? bit flags
  5689.         bit 0: allow ECh window stream opcode to change reverse logattr
  5690.         bit 1: alternate field processing mode selected
  5691.  81h    BYTE    ???
  5692.  82h    DWORD    notification function (manager stream opcode 8Ah)
  5693.         no notification if segment = 0000h
  5694.  86h    DWORD    notification argument (manager stream opcode 8Bh)
  5695.  8Ah    WORD    offset in common memory of ??? window object or 0000h
  5696.  8Ch    WORD    offset in common memory of ??? window object or 0000h
  5697.  8Eh    WORD    offset in common memory of ??? window object or 0000h
  5698.  90h    BYTE    ??? bitflags
  5699.  91h    BYTE    ???
  5700.  ---task object only
  5701.  92h    BYTE    bit flags (bits 0-4)
  5702.  93h    BYTE    character for ??? (default 20h)
  5703.  94h    BYTE    ??? flag
  5704.  95h    WORD    offset in common memory of ???
  5705.  97h  2 BYTEs    ???
  5706.  99h    WORD    ???
  5707.  9Bh    BYTE    ??? bit flags
  5708.         bit 3: ???
  5709.         bit 6: perform protected-attribute processing on select fields
  5710.  9Ch    BYTE    ???
  5711.  9Dh    WORD    offset in common memory of current register save record
  5712.           (see #0305).    No register save record in use if < 01C0h
  5713.  9Fh    WORD    offset in common memory of task's keyboard object
  5714.  A1h    WORD    offset in common memory of task's OBJECTQ object
  5715.  A3h    WORD    offset in common memory of task's mailbox object
  5716.  A5h    WORD    semaphore: FFFFh if on user stack, else on task's private stack
  5717.  A7h    DWORD    user's SS:SP
  5718.  ABh    WORD    task's private SP (SS read from offset 0Ah)
  5719.  ADh  6 BYTEs    ???
  5720.  B3h    BYTE    ??? bit flags
  5721.         bit 0: run in foreground only
  5722.  B4h    BYTE    ???
  5723.  B5h    BYTE    ??? bitflags
  5724.  B6h    BYTE    task status (see #0417 at AX=DE2Ch)
  5725.  B7h  9 BYTEs    ???
  5726.  C0h    WORD    head pointer for keyboard buffer (wraps back to 00h after 80h)
  5727.  C2h    WORD    tail pointer for keyboard buffer (wraps back to 00h after 80h)
  5728.  C4h  2 BYTEs    ??? (0000h)
  5729.  C6h    WORD    segment of keyboard buffer for task
  5730.  C8h    WORD    offset in common memory of ??? keyboard object
  5731.  CAh    BYTE    ???
  5732. ---v2.22-2.42
  5733.  CBh    WORD    offset in common memory of ??? object
  5734.  CEh    BYTE    ??? flag
  5735.  CFh    WORD    offset in common memory of default notify window for task
  5736.           or 0000h if none
  5737.  D1h  4 BYTEs    ???
  5738.  D5h    BYTE    window number on Switch Window menu
  5739.  D6h  5 BYTEs    ???
  5740.  DBh    WORD    offset in common memory of ??? object
  5741.  DDh  2 BYTEs    ???
  5742.  DFh    WORD    API level for task
  5743.  E1h    WORD    offset in common memory of object task is waiting on if task
  5744.           status is 'waiting', else 0000h
  5745.  E7h    WORD    segment of ???
  5746.  E9h 4    BYTEs    ???
  5747.  EDh    WORD    EMS handle of virtualization buffer, 0000h if no virtualization
  5748.  F1h 12 BYTEs    ???
  5749.  FBh    WORD    ???
  5750.  FDh    BYTE    ???
  5751.  FFh 12 BYTEs    ???
  5752. 10Bh    DWORD    pointer to process record (see #0308,#0309)
  5753. 10Dh 10 BYTEs    ???
  5754. 119h    DWORD    SS:SP for ???
  5755. 11Dh  4 BYTEs    ???
  5756. 121h    DWORD    pointer to ???
  5757. 125h 25 BYTEs    ???
  5758. 13Eh    DWORD    pointer to ??? in system memory
  5759. ---v2.22
  5760. 142h  3 BYTEs    ???
  5761. 145h        task's default keyboard object
  5762. ---v2.42
  5763. 142h    DWORD    pointer to first task instance data record in system memory
  5764. 148h    DWORD    pointer to last task instance data record in system memory
  5765.         (see #0310)
  5766. 14Ah    BYTE    ???
  5767. 14Dh 42 BYTEs    task's default keyboard object
  5768. 177h 32 BYTEs    task's ObjectQ object
  5769. 197h 41 BYTEs    task's default mailbox object
  5770. 1C0h 24 BYTEs    first register save record
  5771. 450h    --    default top of private stack
  5772. ---v2.52 (probably all DV/X)
  5773. Same as v2.60 below except there is an extra 29 bytes inserted somewhere
  5774.   before offset 9Fh, but not yet known exactly where.  Also, for the WAIT_ON
  5775.   field (v2.60 offset E3h), some X apps (probably waiting on a socket) have
  5776.   0000h even when waiting.
  5777. ---v2.60
  5778.  CBh    WORD    ??? (added in 2.50 - rest is same as 2.42)
  5779.  CDh    WORD    offset in common memory of ??? object
  5780.  D0h    BYTE    ??? flag
  5781.  D1h    WORD    offset in common memory of default notify window for task
  5782.           or 0000h if none
  5783.  D3h  4 BYTEs    ???
  5784.  D7h    BYTE    window number on Switch Window menu
  5785.  D8h  5 BYTEs    ???
  5786.  DDh    WORD    offset in common memory of ??? object
  5787.  DFh  2 BYTEs    ???
  5788.  E1h    WORD    API level for task
  5789.  E3h    WORD    If status at B6h=waiting, offset in common memory of object
  5790.           that task is waiting on, else 0000h. (Task with CPU also
  5791.           has 0000h here)
  5792.  E9h    WORD    segment of ???
  5793.  EBh 4    BYTEs    ???
  5794.  EFh    WORD    EMS handle of virtualization buffer, 0 if no virtualization
  5795.  F3h 12 BYTEs    ???
  5796.  FDh    WORD    ???
  5797.  FFh    BYTE    ???
  5798. 101h  8 BYTEs    ???
  5799. 109h    DWORD    pointer to process record in system memory
  5800. 10Dh 14 BYTEs  ???
  5801. 11Bh    DWORD    SS:SP for ???
  5802. 11Fh  4 BYTEs    ???
  5803. 123h    DWORD    pointer to ???
  5804. 127h 25 BYTEs    ???
  5805. 140h    DWORD    pointer to ??? in system memory
  5806. 144h    DWORD    pointer to first task instance data record in system memory
  5807. 148h    DWORD    pointer to last task instance data record in system memory
  5808.         (from INT 15/AX=DE27h) (see #0310)
  5809. 14Ch    BYTE    ???
  5810. 14Eh 42 BYTEs    task's default keyboard object
  5811. 179h 32 BYTEs    task's ObjectQ object
  5812. 199h 41 BYTEs    task's default mailbox object
  5813. 1C2h 24 BYTEs    first register save record
  5814. 452h    --    default top of private stack
  5815.  
  5816. Format of DESQview Register Save Record:
  5817. Offset    Size    Description    (Table 0305)
  5818.  00h    WORD    AX
  5819.  02h    WORD    BX
  5820.  04h    WORD    CX
  5821.  06h    WORD    DX
  5822.  08h    WORD    DI
  5823.  0Ah    WORD    SI
  5824.  0Eh    WORD    DS
  5825.  10h    WORD    ES
  5826.  12h    DWORD    return address
  5827.  16h    WORD    original flags
  5828.  
  5829. Format of DESQview mapping context record:
  5830. Offset    Size    Description    (Table 0306)
  5831.  00h    WORD    lowest segment in process's memory
  5832.         (often start of system memory chain)
  5833.  02h    WORD    size of process's memory in paragraphs
  5834.  04h    BYTE    flag: 00h if process swapped out, 01h otherwise
  5835.  05h    BYTE    flag: 00h if allocated in conventional memory, 01h if EMS
  5836.  06h  2 BYTEs    ???
  5837.  08h    WORD    EMS handle if in EMS, else 0
  5838.  0Ah  2 BYTEs    ??? (nonzero if system memory resides in shared mem???)
  5839.  0Ch    WORD    segment of system memory block that contains process record,
  5840.           referenced from segment of start of system memory chain
  5841.  0Eh    BYTE    ???
  5842.  0Fh    WORD    size of system memory block that contains process record
  5843.           and DOS memory in paragraphs
  5844.  11h    BYTE    bit flags
  5845.         Bit 0: Swapped out???
  5846.         Bit 1: ???
  5847.         Bit 2: Swapped out???
  5848.  12h    BYTE    ???
  5849.  13h    BYTE    reference count
  5850.  ---v2.31
  5851.  14h 10 BYTEs    ???
  5852.  1Eh    WORD    segment of process record
  5853.  20h  2 BYTEs    ???
  5854.  22h    WORD    segment of ???    (in first free system memory block???)
  5855.  24h    WORD    segment of end of system memory chain
  5856.  26h    WORD    segment of start of system memory chain
  5857.  28h  8 BYTEs    ???
  5858.  2Ah    DWORD    pointer to ??? (process record???)
  5859.  2Dh 10 BYTEs    ???
  5860.  37h    BYTE    lowest interrupt vector to save on context switch
  5861.  38h    BYTE    highest interrupt vector to save on context switch
  5862.  39h    WORD    offset in common memory of main task with this context
  5863.  3Ah 12 BYTEs    ???
  5864.  46h    BYTE    internal mapping context number
  5865.  47h 12 BYTEs    ???
  5866.  ---v2.5x-2.60
  5867.  14h  6 BYTEs    ???
  5868.  1Ah    WORD    segment of process record
  5869.  1Ch  2 BYTEs    ???
  5870.  1Eh    WORD    segment of first free system memory block
  5871.  20h    WORD    segment of start of system memory chain
  5872.  22h    WORD    segment of end of system memory chain
  5873.  24h 8    BYTEs    ???
  5874.  2Ch    DWORD    pointer to ??? (1 segment into process record???)
  5875.  30h 3    BYTEs    ???
  5876.  33h    WORD    Offset in common memory of main task with this context
  5877.  35h 7    BYTEs    ???
  5878.  3Ch    BYTE    internal mapping context number
  5879.  3Dh 14 BYTEs    ???
  5880.  4Bh    WORD    first DOS memory segment (first MCB segment+1)
  5881.  4Dh    BYTE    ??? (flag???)
  5882.  ---v2.53 (2.5x???)
  5883.  4Eh 12 BYTEs    ???
  5884.  ---v2.60
  5885.  4Eh    WORD    segment of script buffer (see #0311)
  5886.  50h  6 BYTEs    ???
  5887.  
  5888. Format of DESQview Internal Window Record (v2.31-2.60):
  5889. Offset    Size    Description    (Table 0307)
  5890.  00h    BYTE    internal window number???
  5891.  01h    BYTE    display page???
  5892.  02h    BYTE    video mode
  5893.  03h  3 BYTEs    ???
  5894.  06h    BYTE    logical window height
  5895.  07h    BYTE    logical window width
  5896.  08h    DWORD    pointer to text video buffer
  5897.  0Ch 116 BYTEs    ???
  5898.  
  5899. Format of DESQview process record (v2.31):
  5900. Offset    Size    Description    (Table 0308)
  5901. -470h 13 BYTEs    filename of ??? Script
  5902. -463h 1117 BYTEs ??? (script buffer???)
  5903.  -6h  6 BYTEs    ???
  5904.  00h    WORD    segment of parent PSP in process
  5905.  02h  5 BYTEs    ???
  5906.  07h    WORD    segment of current PSP in process
  5907.  09h    WORD    segment of first MCB in process
  5908.  0Bh 13 BYTEs    ???
  5909.  18h 1024 BYTEs process's interrupt vector table
  5910. 418h 376 BYTEs    ???
  5911. 590h        first MCB in process
  5912.  
  5913. Format of DESQview process record (v2.52-v2.60) (probably also 2.5x):
  5914. Offset    Size    Description    (Table 0309)
  5915.  00h 28 BYTEs    EXE header of last EXE, ??? if last program run was COM
  5916.  1Ch ??? BYTEs    overwritten with ASCIZ filename of last program run (EXE/COM)
  5917. 11Ch    WORD    segment of parent PSP in process
  5918. 11Eh  4 BYTEs    ???
  5919. 122h    WORD    segment of current PSP
  5920. 124h    WORD    segment of current PSP
  5921. 126h    WORD    segment of first MCB in process
  5922. 128h  4 BYTEs    ???
  5923. 12Ch    DWORD    pointer to first process instance data record in system memory
  5924. 130h    DWORD    pointer to last process instance data record in system memory
  5925.         (from INT 15/AX=DE27h) (see #0310)
  5926. 134h  8 BYTEs    ???
  5927. 13Ch    WORD    size of current environment
  5928. 13Eh    WORD    segment of current environment
  5929. 140h    WORD    segment of current PSP
  5930. 142h    DWORD    entry point of current program
  5931. 146h 10 BYTEs    ???
  5932. ---v2.52 (v2.5x???)
  5933. 150h    BYTE    ???
  5934. 151h    WORD    segment of parent PSP in process
  5935. 153h    WORD    ???
  5936. 155h    WORD    ???
  5937. 157h    WORD    ???
  5938. 159h  4 BYTEs    ???
  5939. 15Dh    WORD    segment of current environment
  5940. 15Fh    WORD    segment of current PSP
  5941. 161h    WORD    segment of ???
  5942. 162h    WORD    ???
  5943. 164h  3 BYTEs    ???
  5944. 168h 1024 BYTEs process's interrupt vector table
  5945. 568h 120 BYTEs    ???
  5946. 5E0h        first MCB in process
  5947. ---v2.60
  5948. 150h    WORD    segment of parent PSP in process
  5949. 152h    WORD    ???
  5950. 154h    WORD    ???
  5951. 156h    WORD    ???
  5952. 158h  4 BYTEs    ???
  5953. 15Ch    WORD    segment of current environment
  5954. 15Eh    WORD    segment of current PSP
  5955. 160h    WORD    segment of ???
  5956. 162h    WORD    ???
  5957. 164h 1024 BYTEs process's interrupt vector table
  5958. 564h 108 BYTEs    ???
  5959. 5D0h        first MCB in process
  5960.  
  5961. Format of DESQview task or process instance data record (v2.5x???, v2.60):
  5962. Offset    Size    Description    (Table 0310)
  5963.  00h    DWORD    pointer to next record of same type or 00000000
  5964.  04h    DWORD    pointer to previous record of same type or 00000000
  5965.  08h    DWORD    pointer to source area of memory during restore state
  5966.  0Ch    WORD    number of bytes to save/restore
  5967.  0Eh    DWORD    pointer to destination area of memory during restore state
  5968.  12h    WORD    ??? (0)
  5969.  14h  N BYTEs    source memory buffer during restore state
  5970.  
  5971. Format of DESQview script buffer (v2.60):
  5972. Offset    Size    Description    (Table 0311)
  5973.  00h 13 BYTEs    ASCIZ Script filename
  5974.  0Dh 80 BYTEs    ???
  5975.  5Eh  N BYTEs    script records (see #0312)
  5976.  
  5977. Format of one DESQview script record (v2.60):
  5978. Offset    Size    Description    (Table 0312)
  5979.  00h    BYTE    signature 12h
  5980.  01h 18 BYTEs    blank-padded script name
  5981.  13h    BYTE    ASCII code of key attached to script or 0 if non-ASCII key
  5982.  14h    BYTE    scan code of key attached to script if non-ASCII, else 0
  5983.  15h    BYTE    ???
  5984.  16h    WORD    size of script in bytes
  5985.  18h  N    BYTEs    script (ASCII code of each keystroke; if 0, next byte is
  5986.           scan code of non-ASCII key)
  5987.  
  5988. Format of DESQview Common Memory Header (v2.31-2.60):
  5989. Offset    Size    Description    (Table 0313)
  5990.  00h    WORD    offset of lowest used block
  5991.  02h    WORD    bytes of commom memory, including header
  5992.  04h    WORD    offset of first free block
  5993.  06h  N BYTEs    size depends of DV version, ??? (DVP buffer???)
  5994. Note:    the above is located at the beginning of the commom memory segment
  5995. SeeAlso: #0314,#0315,#0323
  5996.  
  5997. Format of DESQview Free block header:
  5998. Offset    Size    Description    (Table 0314)
  5999.  00h    WORD    size of block in bytes including header
  6000.  02h    WORD    offset of next free block
  6001.  04h  N BYTEs    free block
  6002. SeeAlso: #0313,#0315
  6003.  
  6004. Format of DESQview Used block header:
  6005. Offset    Size    Description    (Table 0315)
  6006.  00h    WORD    size of block in bytes including header
  6007.  02h  N BYTEs    used block
  6008. SeeAlso: #0313,#0314
  6009. --------Q-151017-----------------------------
  6010. INT 15 - TopView - UNIMPLEMENTED IN DV 2.x
  6011.     AX = 1017h
  6012. Return: pops up "Programming error" window in DV 2.x
  6013. --------Q-151018-----------------------------
  6014. INT 15 - TopView - "LOCATE" - FIND WINDOW AT A GIVEN SCREEN LOCATION
  6015.     AX = 1018h
  6016.     BH = column
  6017.     BL = row
  6018.     ES = segment of object handle for window below which to search
  6019.          0000h = start search with topmost window
  6020. Return: ES = segment of object handle for window which is visible at the
  6021.            indicated position, or covered by indicated window
  6022.         0000h if no window
  6023. SeeAlso: AX=1023h,AX=1024h
  6024. --------Q-151019-----------------------------
  6025. INT 15 - TopView - "SOUND" - MAKE TONE
  6026.     AX = 1019h
  6027.     BX = frequency in Hertz (0000h = silence)
  6028.     CX = duration in clock ticks (18.2 ticks/sec)
  6029. Return: immediately, tone continues to completion
  6030. Notes:    if another tone is already playing, the new tone does not start until
  6031.       completion of the previous one.  Up to 32 tones may be queued before
  6032.       the process is blocked until a note completes.
  6033.     in DV 2.00, the lowest tone allowed is 20 Hz
  6034.     if CX = 0, the current note is cancelled; if BX = 0 as well, all queued
  6035.       notes are also cancelled
  6036. SeeAlso: AH=82h"HUNTER",INT 16/AH=73h
  6037. --------Q-15101A-----------------------------
  6038. INT 15 - TopView - "OSTACK" - SWITCH TO TASK'S INTERNAL STACK
  6039.     AX = 101Ah
  6040. Return: stack switched
  6041. Notes:    this call may not be nested; a second call must be preceded by a call
  6042.       to "USTACK" (AX=1025h)
  6043.     while TopView requires many API calls to be executed while on the
  6044.       task's internal stack, DESQview allows those calls to be executed
  6045.       regardless of the current stack
  6046. SeeAlso: AX=1025h
  6047. --------Q-15101B-----------------------------
  6048. INT 15 - TopView - "BEGINC" - BEGIN CRITICAL REGION
  6049.     AX = 101Bh
  6050. Return: task-switching temporarily disabled
  6051. Notes:    will not task-switch until "ENDC" (AX = 101Ch) called unless task
  6052.       voluntarily releases the CPU (upon regaining the CPU, task-switching
  6053.       will again be disabled)
  6054.     suspends the caller until DOS is free
  6055. SeeAlso: AH=0Dh"MultiDOS",AX=101Ch,AX=DE13h,AX=DE1Ch,INT 2F/AX=1681h
  6056. SeeAlso: INT 60/DI=0602h
  6057. --------Q-15101C-----------------------------
  6058. INT 15 - TopView - "ENDC" - END CRITICAL REGION
  6059.     AX = 101Ch
  6060. Return: task-switching enabled
  6061. Note:    this API call may be made from within a hardware interrupt handler
  6062. SeeAlso: AX=101Bh,AX=DE13h,AX=DE1Bh,INT 2F/AX=1682h,INT 60/DI=0603h
  6063. --------Q-15101D-----------------------------
  6064. INT 15 - TopView - "STOP" - STOP TASK
  6065.     AX = 101Dh
  6066.     ES = segment of object handle for task to be stopped
  6067.          (== handle of main window for that task)
  6068. Return: indicated task will not get any CPU time until restarted with AX=101Eh
  6069. Note:    once a task has been stopped, additional "STOP"s are ignored
  6070. BUG:    in DV 2.00, this function is ignored unless the indicated task is the
  6071.       current task
  6072. SeeAlso: AX=101Eh,AX=102Bh,AH=12h"VMiX",INT 21/AH=81h
  6073. --------Q-15101E-----------------------------
  6074. INT 15 - TopView - "START" - START TASK
  6075.     AX = 101Eh
  6076.     ES = segment of object handle for task to be started
  6077.          (== handle of main window for that task)
  6078. Return: indicated task is started up again
  6079. Note:    once a task has been started, additional "START"s are ignored
  6080. SeeAlso: AX=101Dh,AX=102Bh,INT 21/AH=82h
  6081. --------Q-15101F-----------------------------
  6082. INT 15 - TopView - "DISPEROR" - POP-UP ERROR WINDOW
  6083.     AX = 101Fh
  6084.     BX = bit fields
  6085.          bits 0-12: number of characters to display
  6086.          bits 13,14: which mouse button may be pressed to remove window
  6087.              00 = either
  6088.              01 = left
  6089.              10 = right
  6090.              11 = either
  6091.          bit 15: beep if 1
  6092.     ES:DI -> text of message
  6093.     CH = width of error window (0 = default)
  6094.     CL = height of error window (0 = default)
  6095.     DX = segment of object handle
  6096. Return: BX = status: 1 = left button, 2 = right, 27 = ESC pressed
  6097. Note:    window remains on-screen until ESC or indicated mouse button is pressed
  6098. --------Q-151020-----------------------------
  6099. INT 15 - TopView - UNIMPLEMENTED IN DV v2.00+
  6100.     AX = 1020h
  6101. Return: pops up "Programming error" window in DV v2.00+
  6102. --------Q-151021-----------------------------
  6103. INT 15 - TopView - "PGMINT" - INTERRUPT ANOTHER TASK
  6104.     AX = 1021h
  6105.     BX = segment of object handle for task to interrupt (not self)
  6106.     DX:CX -> FAR routine to jump to next time task is run
  6107. Return: nothing
  6108. Notes:    the FAR routine is entered with the current ES, DS, SI, DI, and BP
  6109.       values, using the task's internal stack (see AX=101Ah); only SS:SP
  6110.       needs to be preserved
  6111.     multiple PGMINTs to a single task are processed last-in first-out
  6112.     if the other task is in a DOS or DV API call, the interruption will
  6113.       occur on return from that call
  6114. --------Q-151022BX0000-----------------------
  6115. INT 15 - TopView - "GETVER" - GET VERSION
  6116.     AX = 1022h
  6117.     BX = 0000h
  6118. Return: BX nonzero, TopView or compatible loaded
  6119.     (BL = major version, BH = minor version)
  6120. Notes:    TaskView returns BX = 0001h, DESQview v2.00+ returns BX = 0A01h
  6121. --------Q-151023-----------------------------
  6122. INT 15 - TopView - "POSWIN" - POSITION WINDOW
  6123.     AX = 1023h
  6124.     BX = segment of object handle for parent window within which to
  6125.            position the window (0 = full screen)
  6126.     ES = segment of object handle for window to be positioned
  6127.     DL = general window position (see #0316)
  6128.     CH = number of columns to offset from position specified by DL
  6129.     CL = number of rows to offset from position specified by DL
  6130. Return: nothing
  6131.  
  6132. Bitfields for TopView general window position:
  6133. Bit(s)    Description    (Table 0316)
  6134.  0,1    horizontal position
  6135.     00 = current, 01 = center, 10 = left, 11 = right
  6136.  2,3    vertical position
  6137.     00 = current, 01 = center, 10 = top, 11 = bottom
  6138.  4    don't redraw screen if set
  6139.  5-7    not used
  6140. --------Q-151024-----------------------------
  6141. INT 15 - TopView - "GETBUF" - GET VIRTUAL SCREEN INFO
  6142.     AX = 1024h
  6143.     BX = segment of object handle for window
  6144.           (0 = use default)
  6145. Return: ES:DI -> virtual screen
  6146.     CX = size of virtual screen in bytes
  6147.     DL = 00h text screen
  6148.          01h graphics screen
  6149. SeeAlso: INT 10/AH=FEh,INT 21/AH=2Bh/CX=4445h
  6150. --------Q-151025-----------------------------
  6151. INT 15 - TopView - "USTACK" - SWITCH BACK TO USER'S STACK
  6152.     AX = 1025h
  6153. Return: stack switched back
  6154. Notes:    call only after having switched to internal stack with AX=101Ah
  6155.     while TopView requires many API calls to be executed while on the
  6156.       task's private stack, DESQview allows those calls to be executed
  6157.       regardless of the current stack
  6158. SeeAlso: AX=101Ah
  6159. --------Q-1510-------------------------------
  6160. INT 15 - DESQview (TopView???) - UNIMPLEMENTED IN DV 2.x
  6161.     AH = 10h
  6162.     AL = 26h thru 2Ah
  6163. Return: pops up "Programming error" window in DV 2.x
  6164. --------Q-15102B-----------------------------
  6165. INT 15 - DESQview v2.00+ (TopView???) - "POSTTASK" - AWAKEN TASK
  6166.     AX = 102Bh
  6167.     BX = segment of object handle for task
  6168. Return: nothing
  6169. Note:    forces a task which is waiting on its objectq to continue by placing
  6170.       the handle for the task on the objectq
  6171. SeeAlso: AX=101Dh,AX=101Eh,INT 21/AH=82h
  6172. --------Q-15102C-----------------------------
  6173. INT 15 - DESQview v2.00+ - "NEWPROC" - START NEW APPLICATION IN NEW PROCESS
  6174.     AX = 102Ch
  6175.     ES:DI -> contents of .PIF/.DVP file (see #0317)
  6176.     BX = size of .PIF/.DVP info
  6177. Return: BX = segment of object handle for new task
  6178.          0000h on error
  6179. SeeAlso: AX=DE24h,INT 21/AH=4Bh
  6180.  
  6181. Format of .PIF/.DVP file:
  6182. Offset    Size    Description    (Table 0317)
  6183.  00h    BYTE    reserved (0)
  6184.  01h    BYTE    checksum of bytes 02h through 170h
  6185.  02h 30 BYTEs    blank-padded program title
  6186.  20h    WORD    maximum memory to allocate to partition in KB
  6187.  22h    WORD    minimum memory required in KB
  6188.  24h 64 BYTEs    ASCIZ program pathname
  6189.  64h    BYTE    default drive letter ('A',...)
  6190.  65h 64 BYTEs    ASCIZ default directory name
  6191.  A5h 64 BYTEs    ASCIZ program parameters
  6192.  E5h    BYTE    initial screen mode (0-7) (see also offset 189h)
  6193.  E6h    BYTE    number of text pages used
  6194.  E7h    BYTE    number of first interrupt to save
  6195.  E8h    BYTE    number of last interrupt to save
  6196.  E9h    BYTE    rows in virtual screen buffer
  6197.  EAh    BYTE    columns in virtual screen buffer
  6198.  EBh    BYTE    initial window position, row
  6199.  ECh    BYTE    initial window position, column
  6200.  EDh    WORD    system memory in KB
  6201.  EFh 64 BYTEs    ASCIZ shared program name
  6202. 12Fh 64 BYTEs    ASCIZ shared program data file
  6203. 16Fh    BYTE    program flags 1 (see #0318)
  6204. 170h    BYTE    flags2
  6205.         bit 6: uses command-line parameters in field at A5h
  6206.         bit 5: swaps interrupt vectors
  6207. ---information unique to .DVP files---
  6208. 171h  2 BYTEs    keys to use on open menu
  6209. 173h    WORD    size of script buffer in bytes
  6210. 175h    WORD    automatically give up CPU after this many tests for keyboard
  6211.           input in one clock tick (default 0 = never)
  6212. 177h    BYTE    nonzero = "uses own colors"
  6213. 178h    BYTE    nonzero if application swappable
  6214. 179h  3 BYTEs    reserved (0) according to Quarterdeck documentation
  6215.         in actual .DVP files, frequently 01h
  6216. 17Ch    BYTE    nonzero to automatically close on exit (see also #0320)
  6217. 17Dh    BYTE    nonzero if copy-protect floppy is required
  6218. ---information unique to DESQview 2.0+---
  6219. 17Eh    BYTE    .DVP version number
  6220.         00h DESQview v1.2+
  6221.         01h DESQview v2.0+
  6222.         02h DESQview v2.2+
  6223. 17Fh    BYTE    reserved (0)
  6224. 180h    BYTE    initial number of rows in physical window
  6225. 181h    BYTE    initial number of columns in physical window
  6226. 182h    WORD    maximum expanded memory to allow, in KB
  6227. 184h    BYTE    DVP program flags 3 (see #0319)
  6228. 185h    BYTE    keyboard conflict level (0-4 for DV<2.26, 00h-0Fh for DV2.26+)
  6229.         (see #0321)
  6230. 186h    BYTE    number of graphics pages used
  6231. 187h    WORD    extra system memory size
  6232. 189h    BYTE    initial screen mode (FFh = default) (overrides offset E5h)
  6233. ---information unique to DESQview 2.2+---
  6234. 18Ah    BYTE    serial port usage
  6235.         FFh uses all serial ports
  6236.         00h no serial ports
  6237.         01h only COM1
  6238.         02h only COM2
  6239. 18Bh    BYTE    DVP program flags 4 (see #0320)
  6240. 18Ch    BYTE    protection level for 386 machines
  6241. 18Dh 19 BYTEs    reserved (0) for regular DESQview
  6242. ---information unique to DESQview/X 1.0---
  6243. 18Dh    BYTE    X flags
  6244.         bits 3-7: unused (0)
  6245.         bit 2: don't display wait message when opening window
  6246.         bit 1: don't display DOS window
  6247.         bit 0: (XNEWPROC) use DOS client layer (DOS-to-X)
  6248.                (NEWPROC) inherit DOS client layer usage
  6249. 18Eh    BYTE    X keyboard behavior (0-3)
  6250. 18Fh    BYTE    font scaling
  6251.         00h fixed fonts
  6252.         01h scalable fonts
  6253. 190h 10 BYTEs    reserved (0)
  6254. 19Ah    WORD    length of data follownig XDVP signature
  6255. 19Ch  4 BYTEs    signature "XDVP"
  6256. 1A0h  N BYTEs    list of variable length records (see #0322)
  6257.  
  6258. Bitfields for .PIF/.DVP program flags 1:
  6259. Bit(s)    Description    (Table 0318)
  6260.  7    writes text directly to screen
  6261.  6    runs in foreground only (see also offset 184h)
  6262.  5    uses math coprocessor
  6263.  4    accesses system keyboard buffer directly
  6264.  3-1    reserved (0)
  6265.  0    swappable
  6266. SeeAlso: #0317,#0319,#0320
  6267.  
  6268. Bitfields for .DVP program flags 3:
  6269. Bit(s)    Description    (Table 0319)
  6270.  7    automatically assign window position
  6271.  5    maximum memory value has been specified
  6272.  4    disallow "Close" command
  6273.  3    foreground-only when doing graphics
  6274.     set by DV 2.3+ when "Runs in Background" = "D" (undoc)
  6275.  2    don't virtualize (see also #0320)
  6276.  1    foreground-only during DOS calls
  6277.     set by DV 2.3+ when "Runs in Background" = "D" (undoc)
  6278. SeeAlso: #0317,#0318,#0320
  6279.  
  6280. Bitfields for .DVP program flags 4:
  6281. Bit(s)    Description    (Table 0320)
  6282.  7    automatically close application on exit if .COM or .EXE    specified
  6283.     (see also #0317 offset 17Ch)
  6284.  6    swappable if not using serial ports
  6285.  5    start program with window hidden (v2.26+)
  6286.  4    start program in background (v2.26+)
  6287.  3    virtualize text (see also #0319)
  6288.  2    virtualize graphics (see also #0319)
  6289.  1    share CPU when foreground
  6290.  0    share EGA when foreground and zoomed
  6291. SeeAlso: #0317,#0318,#0319
  6292.  
  6293. Bitfields for DESQview keyboard conflict level:
  6294. Bit(s)    Description    (Table 0321)
  6295.  3    save/restore entire INT 09 handler state every taskswtch
  6296.  2    take special precautions for programs which read the BIOS keyboard
  6297.       buffer directly from memory
  6298.  1    never indicate keystroke available during scripts/xfers
  6299.  0    only indicate keystroke available every sixth poll
  6300. SeeAlso: #0317
  6301.  
  6302. Format of DESQview/X variable length record:
  6303. Offset    Size    Description    (Table 0322)
  6304.  00h    WORD    length of following record, 0000h if end of record list
  6305.  02h    BYTE    record type
  6306.         01h script filename, up to 64 characters
  6307.         02h command-line parameters (allows >64 characters on cmdline)
  6308.         03h environment inheritance
  6309.         04h environment string
  6310.         05h starting window position
  6311. ---types 01h,02h,04h---
  6312.  03h  N BYTEs    ASCII data
  6313. ---type 03h---
  6314.  03h    BYTE    inheritance
  6315.         00h do not inherit
  6316.         01h inherit environment
  6317. ---type 05h---
  6318.  03h  N BYTEs    ASCII copy of fields as typed into DVPMAN, separated by commas:
  6319.         starting row, starting column, starting height, starting width
  6320. Note:    if there are multiple occurrences of record types 01h, 02h, or 03h,
  6321.       only the last instance of each type is used; multiple occurrences of
  6322.       type 04h are concatenated
  6323. SeeAlso: #0317
  6324. --------Q-15102D-----------------------------
  6325. INT 15 - DESQview v2.00+ - "KMOUSE" - KEYBOARD MOUSE CONTROL
  6326.     AX = 102Dh
  6327.     BL = subfunction
  6328.          00h determine whether using keyboard mouse
  6329.         Return: BL = 00h using real mouse
  6330.                  01h using keyboard mouse
  6331.          01h turn keyboard mouse on
  6332.          02h turn keyboard mouse off
  6333. --------Q-15102E-----------------------------
  6334. INT 15 - DESQview v2.40+ - ALLOCATE SYSTEM MEMORY
  6335.     AX = 102Eh
  6336.     BX = number of bytes
  6337. Return: AX = status
  6338.         0000h successful
  6339.         ES:DI -> allocated system memory (see #0323)
  6340.         0001h failed
  6341.         ES:DI = 0000h:0000h
  6342. Note:    under DV 2.42, this call is identical to AX=1001h
  6343. SeeAlso: AX=1001h,AX=1002h,AX=DE0Ch
  6344.  
  6345. Format of DESQview system memory block header:
  6346. Offset    Size    Description    (Table 0323)
  6347.  00h    WORD    segment of next header or 0000h
  6348.  02h    WORD    segment of previous header or 0000h
  6349.  04h    WORD    size of block in paragraphs, including header
  6350.  06h    BYTE    availability flag (00h in use, 01h free)
  6351. Note:    this header is located one paragraph before the memory block proper
  6352. SeeAlso: #0313
  6353. --------Q-1511-------------------------------
  6354. INT 15 - TopView commands
  6355.     AH = 11h
  6356.     AL = various (except 17h)
  6357. Note:    in DESQview 2.x, these function calls are identical to AH=DEh, so
  6358.       see those below
  6359. SeeAlso: AH=DEh
  6360. --------T-1511-------------------------------
  6361. INT 15 - VMiX - "sys_system" - EXECUTE SHELL SYSTEM COMMANDS
  6362.     AH = 11h
  6363.     STACK:    DWORD    pointer to ASCIZ string containing a VMiX shell
  6364.             request (max len = 127)
  6365. Return: AX = status (SYS_OK or SYS_ERROR)
  6366. SeeAlso: AH=0Ch"VMiX"
  6367. --------T-1511-------------------------------
  6368. INT 15 - MultiDOS Plus - TURN OFF AltZ TOGGLE
  6369.     AH = 11h
  6370. Note:    disables the Alt-Z MultiDOS command/program-selection hotkey
  6371. SeeAlso: AH=12h"MultiDOS"
  6372. Index:    hotkeys;MultiDOS Plus
  6373. --------Q-151117BX0000-----------------------
  6374. INT 15 - DESQview v2.20+ - "ASSERTMAP" - GET/SET MAPPING CONTEXT
  6375.     AX = 1117h
  6376.     BX = 0000h    get current mapping context without setting
  6377.          nonzero    set new mapping context
  6378. Return: BX = mapping context in effect before call
  6379.     interrupts enabled
  6380. Notes:    this function differs from AX = DE17h for DESQview v2.20 through 2.25
  6381.     mapping contexts determine conventional-memory addressability; setting
  6382.       a mapping context ensures that the associated program and data areas
  6383.       are in memory for access.  Usable by drivers, TSRs and shared
  6384.       programs.
  6385.     caller need not be running under DESQview, but must ensure that the
  6386.       stack in use will not be mapped out by the call
  6387. SeeAlso: AX=DE17h,INT 2F/AX=1685h
  6388. --------m-1511DE-----------------------------
  6389. INT 15 - DESQview - QEXT.SYS - INSTALLATION CHECK
  6390.     AX = 11DEh
  6391. Return: CF clear if installed
  6392.         AX = segment at which QEXT.SYS is located
  6393. Desc:    QEXT.SYS is Quarterdeck's HMA manager for DESQview; more recent
  6394.       versions also implement the XMS standard
  6395. Note:    a private entry point (see #0324) may be found by searching the
  6396.       beginning of the returned segment for the signature string
  6397.       "QUARTERDECK EXTENDED MEMORY MANAGER 286"; the word immediately
  6398.       prior to the signature contains the QEXT version number in BCD,
  6399.       and the word prior to that contains the offset within the QEXT
  6400.       code segment of the private entry point
  6401. SeeAlso: INT 2F/AX=4310h,INT 67/AH=3Fh
  6402.  
  6403. (Table 0324)
  6404. Call QEXT.SYS private entry point with:
  6405.     AH = 00h ???
  6406.     AH = nonzero ???
  6407. --------T-1512-------------------------------
  6408. INT 15 - VMiX - "sys_sleep" - PUT PROCESS TO SLEEP
  6409.     AH = 12h
  6410.     STACK:    WORD    process ID
  6411. Return: AX = status (SYS_OK or SYS_ERROR)
  6412. SeeAlso: AH=03h"MultiDOS",AX=101Dh,AH=13h"VMiX"
  6413. --------T-1512-------------------------------
  6414. INT 15 - MultiDOS Plus - TURN ON AltZ TOGGLE
  6415.     AH = 12h
  6416. Note:    enables the Alt-Z MultiDOS command/program-selection hotkey
  6417. SeeAlso: AH=11h"MultiDOS"
  6418. Index:    hotkeys;MultiDOS Plus
  6419. --------Q-1512--BH00-------------------------
  6420. INT 15 - TopView - SEND MESSAGE - "HANDLE" - RETURN OBJECT HANDLE
  6421.     AH = 12h
  6422.     BH = 00h
  6423.     BL = which handle to return
  6424.         00h handle in DWORD on top of stack
  6425.         01h current task's window handle
  6426.         02h given task's mailbox handle (task's handle on stack)
  6427.         03h current task's mailbox handle
  6428.         04h given task's keyboard handle (task's handle on stack)
  6429.         05h current task's keyboard object handle
  6430.         06h given task's OBJECTQ handle (task's handle on stack)
  6431.         07h current task's OBJECTQ handle
  6432.         08h      \
  6433.           thru > return 0000:0000 under DV < 2.26
  6434.         10h      /
  6435.         0Ch (2.26+) task owning object with handle in DWORD on top of stack
  6436.         0Dh (2.26+) task handle of owner (parent) of current task
  6437. Return: DWORD on top of stack is object handle
  6438. Note:    BL=0Ch,0Dh returns 00000000h if the object is not open (keyboard,
  6439.       mailbox, panel, pointer, and timer objects) or is an orphan (task,
  6440.       window)
  6441. SeeAlso: AH=12h/BH=02h,AH=12h/BH=80h
  6442. --------Q-1512--BH01-------------------------
  6443. INT 15 - TopView - SEND MESSAGE - "NEW" - CREATE NEW OBJECT
  6444.     AH = 12h
  6445.     BH = 01h
  6446.     BL = object type to create
  6447.         00h (DV 2.0x only) handle is DWORD on top of stack
  6448.         01h (DV 2.0x only) use task's window handle
  6449.         02h (DV 2.0x only) given task's mailbox (task's handle on stack)
  6450.         03h (DV 2.0x only) current task's mailbox
  6451.         04h (DV 2.0x only) given task's keyboard (task's handle on stack)
  6452.         05h (DV 2.0x only) current task's keyboard object
  6453.         08h WINDOW class
  6454.         09h MAILBOX class
  6455.         0Ah KEYBOARD class
  6456.         0Bh TIMER object (counts down 32-bit time in 10ms increments)
  6457.         0Fh POINTER object
  6458.         10h PANEL object
  6459.     STACK: (if window object or WINDOW class)
  6460.            DWORD address to jump to (no new task if high word == 0)
  6461.            DWORD (reserved) 0 = non-task window, FFFFh = task window
  6462.            DWORD bytes for task's private stack (FFFFh == default of 0100h)
  6463.            DWORD bytes system memory for input buffer for READ/READN
  6464.             (0 == none, -1 == default--same as logical window size)
  6465.            DWORD window size, columns
  6466.            DWORD window size, rows
  6467.            DWORD length of window title
  6468.            DWORD address of window title
  6469. Return: DWORD on top of stack is new object handle
  6470. Notes:    if a new task is created, it is started with
  6471.       AX = BX = SI = DI = BP = 0
  6472.       DX:CX = handle of parent task
  6473.       DS = ES = SS = segment of private stack (and new task's handle)
  6474.     new windows are orphans, inherit the colors/hidden status of the
  6475.       creating task's window, and are placed in the upper left hand corner
  6476.       of the screen but not automatically redrawn
  6477.     new keyboards are closed, and have all object bits cleared except for
  6478.       the hardware cursor bit
  6479. SeeAlso: AH=12h/BH=02h,AH=12h/BH=81h
  6480. --------Q-1512--BH02-------------------------
  6481. INT 15 - TopView - SEND MESSAGE - "FREE" - FREE AN OBJECT
  6482.     AH = 12h
  6483.     BH = 02h
  6484.     BL = object
  6485.         00h handle in DWORD on top of stack
  6486.         window: close window and free
  6487.         timer: free timer
  6488.         panel: free panel object
  6489.         pointer: free pointer
  6490.         01h task's window handle - kills task, never returns
  6491.         02h given task's mailbox (task's handle on top of stack)
  6492.         03h current task's mailbox
  6493.         04h given task's keyboard (task's handle on top of stack)
  6494.         05h current task's keyboard object
  6495. Notes:    when a window is freed, its keyboard and pointer objects are freed;
  6496.       task windows also free any mailbox, objectq, and panel objects held
  6497.       by the task and any child tasks
  6498.     if the keyboard being freed is the default keyboard for a task, this
  6499.       call is equivalent to CLOSE
  6500.     panel and pointer objects are automatically closed if open
  6501. SeeAlso: AH=12h/BH=01h,AH=12h/BH=0Dh,AH=12h/BH=82h
  6502. --------Q-1512--BH03-------------------------
  6503. INT 15 - TopView - SEND MESSAGE - "ADDR" - GET HANDLE OF MESSAGE SENDER
  6504.     AH = 12h
  6505.     BH = 03h
  6506.     BL = object
  6507.         00h mailbox handle in DWORD on top of stack
  6508.         02h sender of last msg read from mailbox (task's handle on stack)
  6509.         03h sender of last msg read from current task's mailbox
  6510. Return: DWORD on stack is task handle of message sender
  6511. SeeAlso: AH=12h/BH=00h,AH=12h/BH=83h
  6512. --------Q-1512--BH03-------------------------
  6513. INT 15 - DESQview v2.26+ - "CONNECT" - CONNECT TWO WINDOWS
  6514.     AH = 12h
  6515.     BH = 03h
  6516.     BL = window to be connected
  6517.         00h handle of window to be attached in DWORD on top of stack
  6518.         01h attach current task's main window
  6519.     STACK: DWORD handle of window to attach to or 00000000h to detach
  6520. Return: STACK popped
  6521. Notes:    when two windows are connected, both will move if the user moves either
  6522.     multiple windows may be attached to a single window, but each window
  6523.       may only be attached to one window at a time
  6524. SeeAlso: AH=12h/BH=83h
  6525. --------Q-1512--BX0300-----------------------
  6526. INT 15 - TopView - SEND MESSAGE - "DIR" - GET PANEL FILE DIRECTORY
  6527.     AH = 12h
  6528.     BX = 0300h
  6529.     STACK: DWORD handle of panel object (see #0325)
  6530. Return: STACK: DWORD length of directory (always multiple of 14 bytes)
  6531.            DWORD address of directory
  6532. Note:    a null string is returned if the object is not open
  6533. SeeAlso: AH=12h/BX=0400h"APPLY",AH=12h/BH=83h
  6534.  
  6535. Format of TopView panel file:
  6536. Offset    Size    Description    (Table 0325)
  6537.  00h  2 BYTEs    C0h C3h
  6538.  02h    BYTE    number of panels in file
  6539.  03h    for each panel in file:
  6540.         8 BYTEs  blank-padded panel name
  6541.           DWORD  panel offset in file
  6542.           WORD   panel length
  6543.     data for panels (each consists of one or more window/query/manager
  6544.       streams); first byte of each panel must be 1Bh, fifth byte must be
  6545.       E5h
  6546. --------Q-1512--BH04-------------------------
  6547. INT 15 - TopView - SEND MESSAGE - "READ" - READ NEXT LOGICAL LINE OF WINDOW
  6548.     AH = 12h
  6549.     BH = 04h
  6550.     BL = window to read from
  6551.         00h handle is DWORD on top of stack
  6552.         01h use calling task's default window
  6553.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  6554.         0Dh (DV 2.26+) default window of parent task of current task
  6555. Return: STACK:    DWORD number of bytes read
  6556.         DWORD address of buffer
  6557. Notes:    reading starts at the current logical cursor position; the cursor is
  6558.       updated to point at the character following the last one read
  6559.     any translucent blanks (FFh) which are visible on screen are changed
  6560.       to the character which is seen through them
  6561.     the string produced by the read is placed in an input buffer which may
  6562.       be reused by the next READ or READN of a window
  6563.     window stream opcodes D8h and D9h determine whether the read returns
  6564.       characters or attributes
  6565. SeeAlso: AH=12h/BH=05h"WINDOW",AH=12h/BH=12h,AH=12h/BH=84h
  6566. --------Q-1512--BH04-------------------------
  6567. INT 15 - TopView - SEND MESSAGE - "READ" - GET NEXT RECORD FROM OBJECT
  6568.     AH = 12h
  6569.     BH = 04h
  6570.     BL = object
  6571.         00h handle is DWORD on top of stack
  6572.         mailbox: wait for and get next message
  6573.         keyboard: wait for and get pointer to next input buffer
  6574.         pointer: wait for and get next message
  6575.         02h get next message from mailbox (task's handle on top of stack)
  6576.         03h get next message from current task's mailbox
  6577.         04h get the next input from keyboard (handle on top of stack)
  6578.         05h get the next input from task's default keyboard
  6579.         06h wait for input from any object in OBJECTQ (handle on stack)
  6580.         07h wait for input from any object in task's default OBJECTQ
  6581. Return: STACK: (if objectq) DWORD handle of object with input
  6582.            (otherwise)  DWORD number of bytes
  6583.                 DWORD address of pointer message (see #0326)
  6584. Notes:    for a keyboard in keystroke mode, the input buffer is a single byte
  6585.       containing the character code as returned by the BIOS; the BIOS scan
  6586.       code is available via the STATUS call if the character is zero
  6587.     for a keyboard in field mode, the input buffer format is determined
  6588.       by the field table header for the window the keyboard is attached to
  6589.     keyboard input buffers and mailbox message buffers may be invalidated
  6590.       by the next READ, ERASE, CLOSE, or FREE message to the same object
  6591. SeeAlso: AH=12h/BH=05h"OBJECT",AH=12h/BH=84h
  6592.  
  6593. Format of DESQview pointer message:
  6594. Offset    Size    Description    (Table 0326)
  6595.  00h    WORD    row
  6596.  02h    WORD    column
  6597.  04h    BYTE    status (see #0327)
  6598.  05h    BYTE    field number or zero (APILEVEL >= 2.00 only)
  6599.  
  6600. Bitfields for DESQview pointer status:
  6601. Bit(s)    Description    (Table 0327)
  6602.  7-2    number of clicks-1 if multiple-click mode active
  6603.  7    set when press/release mode active and button pressed
  6604.  6    set when press/release mode active and button released
  6605.  1-0    button pressed (00=none,01=button1,10=button2)
  6606. --------Q-1512--BX0400-----------------------
  6607. INT 15 - TopView - SEND MESSAGE - "READ" - WAIT FOR TIMER TO EXPIRE
  6608.     AH = 12h
  6609.     BX = 0400h
  6610.     STACK: DWORD timer's handle
  6611. Return: after timer expires
  6612.     STACK: DWORD time in 1/100 sec after midnight when timer expired
  6613. SeeAlso: AH=12h/BH=0Ah,AH=12h/BH=84h
  6614. --------Q-1512--BX0400-----------------------
  6615. INT 15 - TopView - SEND MESSAGE - "APPLY" - WRITE PANEL TO WINDOW
  6616.     AH = 12h
  6617.     BX = 0400h
  6618.     STACK: DWORD handle of panel object
  6619.            DWORD window's handle (or 0 for current task's window)
  6620.            DWORD length of panel name
  6621.            DWORD pointer to panel name
  6622. Return: STACK: DWORD handle of window which was used
  6623.            DWORD handle of keyboard or 0
  6624. Notes:    status of APPLY may be checked with STATUS message
  6625.     panel MUST have the following format
  6626.       first byte must be 1Bh (i.e. must start with a stream)
  6627.       first opcode in stream must be E5h
  6628.         single byte arg of opcode is interpreted thus:
  6629.           bits 7,6    11 means create new window
  6630.             10 means create new field table for existing window
  6631.             01 means use existing window and field table
  6632.           bit 5 if set, panel contains a field table
  6633.             (creates a new keyboard and puts it in field mode)
  6634.           bit 4 if set, panel contains input fields
  6635.           bit 3 if set, panel contains select fields but no input fields
  6636.     if the panel contains input or select fields, a keyboard handle is
  6637.       returned; either the window's current open keyboard or a
  6638.       newly-created keyboard object.  The caller should read that keyboard
  6639.       to obtain input from the panel.
  6640. SeeAlso: AH=12h/BH=84h
  6641. --------Q-1512--BH05------------------------
  6642. INT 15 - TopView - SEND MESSAGE - "WRITE" - WRITE TO OBJECT
  6643.     AH = 12h
  6644.     BH = 05h
  6645.     BL = object
  6646.         00h handle is DWORD on top of stack
  6647.         timer: start timer to end at a specified time
  6648.         keyboard: add input buffer to queue
  6649.         pointer: move pointer icon to specified position
  6650.         02h send message by value/status=0 to mbox (task's handle on stack)
  6651.         03h send message by value/status=0 to current task's mailbox
  6652.         04h add input buffer to KEYBOARD queue (handle on top of stack)
  6653.         05h add input buffer to task's default KEYBOARD queue
  6654.         06h add an object to OBJECTQ (handle on top of stack)
  6655.         07h add an object to task's default OBJECTQ
  6656.     STACK: (if mailbox)  DWORD length
  6657.                  DWORD address
  6658.            (if keyboard) DWORD status (scan code in keystroke mode)
  6659.                  DWORD length (should be 1 in keystroke mode)
  6660.                  DWORD address
  6661.            (if objectq)  DWORD handle of object to add
  6662.            (if timer)    DWORD 1/100ths seconds since midnight (actually
  6663.                    only accurate to 1/18 sec)
  6664.            (if pointer)  DWORD column relative to origin of window
  6665.                  DWORD row relative to origin of window
  6666. Notes:    under DV 2.2+, failed mailbox writes may return CF set (see AX=DE15h)
  6667.     the data and status written to a keyboard object must match the format
  6668.       returned by the keyboard object in the current mode
  6669.     the pointer position is scaled according to the current scaling factors
  6670. SeeAlso: AH=12h/BH=04h,AH=12h/BH=85h
  6671. --------Q-1512--BH05-------------------------
  6672. INT 15 - TopView - SEND MESSAGE - "WRITE" - WRITE STRING TO WINDOW
  6673.     AH = 12h
  6674.     BH = 05h
  6675.     BL = window to write to
  6676.         00h DWORD on top of stack is window handle
  6677.         01h write string to task's default window
  6678.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  6679.         0Dh (DV 2.26+) default window of parent of current task
  6680.     STACK: DWORD object handle if handle passed on stack
  6681.            DWORD total length of string (high word == 0)
  6682.            DWORD address of string to display (see #0328)
  6683. Return: indicated actions performed
  6684.     a. non-control characters are displayed (opcodes DEh and DFh control
  6685.        whether the attributes are left or changed to the current attrib)
  6686.     b. CR/LF/BS/Tab cause the usual cursor movement
  6687.     c. ESC starts a data structure with additional commands if following
  6688.        byte is less than 20h; otherwise, it is written to the window
  6689.     STACK:    DWORD handle of new window if window stream opcode E6h
  6690.         else nothing
  6691. SeeAlso: AH=12h/BH=04h,AH=12h/BH=85h
  6692.  
  6693. Format of stream data structure:
  6694. Offset    Size    Description    (Table 0328)
  6695.  00h    BYTE    1Bh magic value identifying start of stream
  6696.  01h    BYTE    stream type (00h, 01h, 10h, 14h-1Fh legal)
  6697.         (see #0329,#0335,#0336,#0337)
  6698.  02h    WORD    length of remainder of stream in bytes
  6699.     var-length fields follow, each an OPCODE followed by
  6700.          zero or more args
  6701.  
  6702. (Table 0329)
  6703. Values for MODE 00h (set or display values) "WINDOW STREAM" opcodes:
  6704. Opcodes:args
  6705.  00h  display 20h blanks with the default attribute
  6706.  01h-1Fh display OPCODE blanks with the default attribute
  6707.  20h  display char with default attribute 20h times
  6708.     BYTE char to repeat
  6709.  21h-3Fh display char with default attribute OPCODE-20h times
  6710.     BYTE char to repeat
  6711.  40h  display 20h blanks with specified attribute
  6712.     BYTE attribute of blanks
  6713.  41h-5Fh display OPCODE-40h blanks with specified attribute
  6714.     BYTE attribute of blanks
  6715.  60h  display next 20h characters
  6716.     20h BYTEs characters to display
  6717.  61h-7Fh display next OPCODE-60h characters
  6718.     N BYTEs characters to display
  6719.  80h-87h display N blanks with default attribute
  6720.     BYTE low 8 bits of 11-bit count (high 3 in low 3 bits of OPCODE)
  6721.           [000h means 800h]
  6722.  88h-8Fh display N copies of the character
  6723.     BYTE low 8 bits of 11-bit count (high 3 in low 3 bits of OPCODE)
  6724.           [000h means 800h]
  6725.     BYTE character to repeat
  6726.  90h-97h display N blanks with specified attribute
  6727.     BYTE low 8 bits of 11-bit length (high 3 in low 3 bits of OPCODE)
  6728.           [000h means 800h]
  6729.     BYTE attribute
  6730.  98h-9Fh display string at logical cursor pos
  6731.     BYTE low 8 bits of 11-bit length (high 3 in low 3 bits of OPCODE)
  6732.           [000h means 800h]
  6733.     N BYTEs string to display
  6734.  A0h  set logical cursor row
  6735.     BYTE row number (0 is top)
  6736.  A1h  set logical cursor column
  6737.     BYTE column number (0 is leftmost)
  6738.  A2h  set top edge of scrolling region
  6739.     BYTE row
  6740.  A3h  set left edge of scrolling region
  6741.     BYTE column
  6742.  A4h  set row of physical window position
  6743.     BYTE line
  6744.  A5h  set column of physical window position
  6745.     BYTE column
  6746.  A6h  set height of physical window
  6747.     BYTE number of rows
  6748.  A7h  set width of physical window
  6749.     BYTE number of columns
  6750.  A8h  set viewport row
  6751.     BYTE row
  6752.  A9h  set viewport column
  6753.     BYTE column
  6754.  AAh  set virtual screen height [contents of window unpredictable after]
  6755.     BYTE rows
  6756.  ABh  set virtual screen width [contents of window unpredictable after]
  6757.     BYTE columns
  6758.  ACh-AEh unused
  6759.  AFh  set compatible/preferred video modes
  6760.     BYTE compatibility/preference mask
  6761.         bit 7    compatible with monochrome
  6762.         bit 6    compatible with color text, EGA/VGA graphics
  6763.         bit 5    compatible with medium-resolution CGA graphics
  6764.         bit 4    compatible with high-resolution CGA graphics
  6765.         bit 3    prefer monochrome
  6766.         bit 2    prefer color text, EGA/VGA graphics
  6767.         bit 1    prefer medium-resolution CGA graphics
  6768.         bit 0    prefer high-resolution CGA graphics
  6769.  B0h  move logical cursor down
  6770.     BYTE number of rows (signed, negative values move up)
  6771.         [if rows=0 and hardware cursor owner, update hardware cursor]
  6772.  B1h  move logical cursor right
  6773.     BYTE number of columns (signed, negative values move left)
  6774.         [if cols=0 and hardware cursor owner, update hardware cursor]
  6775.  B2h  shift top edge of scrolling region
  6776.     BYTE number of rows (signed)
  6777.  B3h  shift left edge of scrolling region
  6778.     BYTE number of columns (signed)
  6779.  B4h  shift physical window down
  6780.     BYTE number of lines (signed)
  6781.  B5h  shift physical window right
  6782.     BYTE number of columns (signed)
  6783.  B6h  expand physical window vertically
  6784.     BYTE number of lines (signed)
  6785.  B7h  expand physical window horizontally
  6786.     BYTE number of columns (signed)
  6787.  B8h  adjust viewport row
  6788.     BYTE number of rows (signed)
  6789.  B9h  adjust viewport column
  6790.     BYTE number of columns (signed)
  6791.  BAh  adjust virtual screen height [contents of window unpredict after]
  6792.     BYTE number of rows to increase (signed)
  6793.  BBh  adjust virtual screen width [contents of window unpredictbl after]
  6794.     BYTE number of columns to increase (signed)
  6795.  BCh-BFh reserved (currently unused)
  6796.  C0h  set logical cursor position
  6797.     BYTE row number (0 is top border)
  6798.     BYTE column number (0 is left border)
  6799.  C1h  set top left corner of scrolling region
  6800.     BYTE row
  6801.     BYTE column
  6802.  C2h  set physical window pos
  6803.     BYTE upper left row (no top border if 0)
  6804.     BYTE upper left column (no left border if 0)
  6805.  C3h  set current window size
  6806.     BYTE number of rows
  6807.     BYTE number of columns
  6808.  C4h  set upper left corner of viewport (portion of virtual screen displayed
  6809.       in window)
  6810.     BYTE row
  6811.     BYTE column
  6812.  C5h  set size of virtual screen [contents unpredictable afterwards]
  6813.     BYTE number of rows
  6814.     BYTE number of columns
  6815.  C6h  unused
  6816.  C7h  unused
  6817.  C8h  set logical cursor relative to current position
  6818.     BYTE number of rows to move down (signed)
  6819.     BYTE number of columns to move right (signed)
  6820.         [if rows=cols=0 and hardware cursor owner, update hardw cursor]
  6821.  C9h  shift top left corner of scrolling region
  6822.     BYTE number of rows (signed)
  6823.     BYTE number of columns (signed)
  6824.  CAh  set window pos relative to current position
  6825.     BYTE number of rows to shift down (signed)
  6826.     BYTE number of columns to shift right (signed)
  6827.  CBh  set window size relative to current size
  6828.     BYTE number of rows to expand (signed)
  6829.     BYTE number of cols to expand (signed)
  6830.  CCh  shift viewport relative to current position
  6831.     BYTE rows to shift (signed)
  6832.     BYTE cols to shift (signed)
  6833.  CDh  resize virtual screen
  6834.     BYTE number of rows to expand (signed)
  6835.     BYTE number of columns to expand (signed)
  6836.  CEh  scroll text when using E8h-EBh/F8h-FBh opcodes (default)
  6837.  CFh  scroll attributes when using  E8h-EBh/F8h-FBh opcodes
  6838.  D0h  allow window frame to extend beyond screen
  6839.  D1h  always display a complete frame, even if window extends beyond edge of
  6840.       screen
  6841.  D2h  allow DV to change logical colors on video mode switch (default)
  6842.  D3h  application changes logical attributes
  6843.  D4h  window is visible [must redraw to actually make visible]
  6844.  D5h  window is hidden [must redraw to actually remove]
  6845.  D6h  window has frame (default)
  6846.  D7h  window unframed [must redraw to actually remove frame]
  6847.  D8h  READ/READN will read characters from window (default)
  6848.  D9h  READ/READN will read attributes from window
  6849.  DAh  use logical attributes, which may be remapped (see #0330)
  6850.  DBh  use physical attributes for characters
  6851.  DCh  enable special actions for control characters (default)
  6852.  DDh  disable special control char handling, all chars displayable by BIOS TTY
  6853.       call
  6854.  DEh  write both character and attribute (default)
  6855.  DFh  write character only, leave attribute untouched
  6856.  E0h  repeat following commands through E1h opcode
  6857.     BYTE number of times to repeat (00h means 256 times)
  6858.  E1h  end of commands to repeat, start repeating them
  6859.  E2h  set current output color
  6860.     BYTE color
  6861.  E3h  clear virtual screen from scroll origin to end using current color
  6862.  E4h  redraw window
  6863.  E5h  select menu style
  6864.     BYTE style (normally 18h)
  6865.         bits 5,4 = 01 use two-letter menu entries for remainder of
  6866.           this stream
  6867.  E5h  (panel file only)
  6868.     BYTE modifier
  6869.         bits 7,6 = 11 panel stream creates new window
  6870.              = 10 panel defines new field table for existing window
  6871.              = 01 panel stream uses existing window & field table
  6872.         bit 5 = 1 stream contains a field table (create kyboard object)
  6873.         bit 4 = 1 stream defines input fields (create keyboard object)
  6874.         bit 3 = 1 stream defines select fields but not input fields
  6875.         bit 2 = 1 stream defines exclusive input window (DV 2.2)
  6876.         bit 1 reserved
  6877.         bit 0 reserved
  6878.  E6h  create new window and perform rest of manipulations in new window
  6879.     BYTE number of rows
  6880.     BYTE number of columns
  6881.     Return: DWORD object handle of new window returned on stack at end
  6882.     Note:    the window is created with a physical size of 0x0 at the
  6883.           same position as the window to which this stream was sent
  6884.  E7h  no operation
  6885.  E8h  scroll area up (top left corner defined by opcode C1h)
  6886.     BYTE height
  6887.     BYTE width
  6888.  E9h  scroll area down (top left corner defined by opcode C1h)
  6889.     BYTE height
  6890.     BYTE width
  6891.  EAh  scroll area left (top left corner defined by opcode C1h)
  6892.     BYTE height
  6893.     BYTE width
  6894.  EBh  scroll area right (top left corner defined by opcode C1h)
  6895.     BYTE height
  6896.     BYTE width
  6897.  ECh  set logical attributes for window contents
  6898.     BYTE video modes command applies to
  6899.         bit 7    monochrome
  6900.         bit 6    color text, EGA/VGA graphics
  6901.         bit 5    medium-resolution CGA graphics
  6902.         bit 4    high-resolution CGA graphics
  6903.     BYTE which attributes to set
  6904.         bit 7    if set, copy single following byte to indicated attribs
  6905.         bits 4-6  number of first attribute to change - 1
  6906.         bits 0-3  number of consecutive attributes to change
  6907.     N BYTEs new attributes
  6908.  EDh  set logical attributes for window frame
  6909.     BYTE video modes command applies to (see opcode ECh)
  6910.     BYTE which attributes to set
  6911.         bit 7    if set, copy single following byte to indicated attrs
  6912.         bits 4-6  number of first attribute to change - 1
  6913.         bits 0-3  number of consecutive attributes to change
  6914.     N BYTEs new attributes
  6915.           attributes
  6916.                1 = top left corner
  6917.                2 = top right corner
  6918.                3 = bottom left corner
  6919.                4 = bottom right corner
  6920.                5 = top edge
  6921.                6 = bottom edge
  6922.                7 = left edge
  6923.                8 = right edge
  6924.  EEh  set characters for window frame
  6925.     BYTE video modes command applies to (see opcode ECh)
  6926.     BYTE which characters to set
  6927.         bit 7    if set, copy single following byte to indicated chars
  6928.         bits 4-6  number of first character to change - 1
  6929.         bits 0-3  number of consecutive characters to change
  6930.     N BYTEs new chars (same relative position as attributes above)
  6931.  EFh  set window name
  6932.     BYTE length of name (should be in range 0 to logical screen width)
  6933.     N BYTEs name
  6934.  F0h  clear input field to blanks
  6935.     BYTE field number
  6936.  F1h  fill input field with character
  6937.     BYTE field number
  6938.     BYTE char
  6939.  F2h  set color of input field
  6940.     BYTE field number (1-N)
  6941.     BYTE attribute
  6942.  F3h  set initial contents of input field
  6943.     BYTE field number (1-N)
  6944.     N BYTEs enough chars to exactly fill field as defined by op FFh
  6945.  F4h  position cursor to start of specific input field
  6946.     BYTE field number (1-N)
  6947.  F5h  change field table entry
  6948.     BYTE field number
  6949.     7-8 BYTEs field table entry (see opcode FFh below)
  6950.  F6h  set field type
  6951.     BYTE field number
  6952.     BYTE type
  6953.         00h inactive
  6954.         40h output field
  6955.         80h input field
  6956.         C0h deselected field
  6957.         C2h selected field
  6958.  F7h  "broadcast write"    write data to fields with program output bit set in
  6959.       the field table entry, in field number order
  6960.     N BYTEs (total length of all program output fields)
  6961.  F8h  scroll field up a line
  6962.     BYTE field number
  6963.  F9h  scroll field down a line
  6964.     BYTE field number
  6965.  FAh  scroll field left
  6966.     BYTE field number
  6967.  FBh  scroll field right
  6968.     BYTE field number
  6969.  FCh  set field table header
  6970.     6 BYTEs    field table header (see #0331)
  6971.  FDh  reset modified bit for all fields
  6972.  FEh  reset selected and modified bits for all fields
  6973.  FFh  set up input fields
  6974.     6 BYTEs    table header (see #0331)
  6975.     7/8N BYTEs the field table entries, one for each field (see #0333)
  6976.     Note:    DESQview uses and updates the actual copy of the information
  6977.           which is contained in the stream.  Thus this info must remain
  6978.           intact until after the data entry is complete.
  6979.  
  6980. (Table 0330)
  6981. Values for TopView logical attributes:
  6982.  01h    normal text
  6983.  02h    highlighted normal text
  6984.  03h    help text
  6985.  04h    highlighted help text
  6986.  05h    error message
  6987.  06h    highlighted error message
  6988.  07h    emphasized text
  6989.  08h    marked text
  6990.  9-16    reverse video versions of 1-8
  6991.  
  6992. Format of TopView field table header:
  6993. Offset    Size    Description    (Table 0331)
  6994.  00h    BYTE    number of fields (must be <= existing number of fields)
  6995.  01h    BYTE    screen behavior bits (see #0332)
  6996.  02h    BYTE    current input field (updated by DESQview)
  6997.  03h    BYTE    current select field (updated by DESQview)
  6998.  04h    BYTE    attribute for select fields when they are pointed at
  6999.  05h    BYTE    attribute for select fields which have been selected
  7000.  
  7001. Bitfields for TopView screen behavior bits:
  7002. Bit(s)    Description    (Table 0332)
  7003.  7    reserved
  7004.  6    menu items may be selected via keyboard
  7005.  5    left mouse button in "status" mode (press anywhere in window
  7006.       immediately returns control to application)
  7007.  4    right mouse button in "status" mode
  7008.  3    select fields return contents or blanks rather than 'Y' or 'N'
  7009.  2    modified bits reset on return to application
  7010.  1-0    type of data returned
  7011.     00 no data returned on read of keyboard
  7012.     01 data returned as array of characters containing all fields packed
  7013.           together, with no field numbers
  7014.     10 data returned as numbered variable-length records for all fields
  7015.     11 data returned as numbered variable-length records for the fields
  7016.           which were modified
  7017.  
  7018. Format of TopView field table entry:
  7019. Offset    Size    Description    (Table 0333)
  7020.  00h    BYTE    start row      \
  7021.  01h    BYTE    start column  \ if menu selection and start is to
  7022.  02h    BYTE    end row       / right or below end, select from kbd only
  7023.  03h    BYTE    end column   /
  7024.  04h    BYTE    field type (see #0334)
  7025.  05h    BYTE    modifier
  7026.         if type is fill-in, then bit flags to determine behavior
  7027.           bit 7     automatically enter CR when field full
  7028.           bit 6     move to next field when current field is full
  7029.           bit 5     enter text from right end (for numbers)
  7030.           bit 4     force input to uppercase
  7031.           bit 3     clear old contents on first keystroke
  7032.           bit 2     input returned when cursor moves out of
  7033.               modified field ("validate", API level 2.02+)
  7034.           bit 1     reserved
  7035.           bit 0     reserved
  7036.         if select field, first key to press to activate
  7037.           00h if have to point-&-click or is an extended-ASCII
  7038.               keystroke (only if two-key menus enabled)
  7039.  06h    BYTE    (select field only) normal color of field
  7040.  07h    BYTE    second key for select field.  This byte is present iff
  7041.           two-letter menu entries selected with opcode E5h, and in that
  7042.           case is present regardless of field type
  7043.  
  7044. Bitfields for TopView field type:
  7045. Bit(s)    Description    (Table 0334)
  7046.  7,6    field class
  7047.     00 inactive (non-entry) field
  7048.     01 echos keystrokes input to make menu selection
  7049.     10 fill-in field
  7050.     11 select field
  7051.  5    field can be filled by broadcast write (F7h opcode)
  7052.  4    reserved
  7053.  3    reserved
  7054.  2    reserved
  7055.  1    set if field selected
  7056.  0    set if field modified
  7057.  
  7058. (Table 0335)
  7059. Values for MODE 01h "QUERY STREAM" opcodes:
  7060. (valid only for those opcodes listed here)
  7061.  A0h return logical cursor row in next byte
  7062.  A1h return logical cursor column in next byte
  7063.  A2h return top row of scrolling region in next byte
  7064.  A3h return left column of scrolling region in next byte
  7065.  A4h return row of physical window origin in next byte
  7066.  A5h return column of physical window origin in next byte
  7067.  A6h return height of physcial window in next byte
  7068.  A7h return width of physical window in next byte
  7069.  A8h return row of viewport origin in next byte
  7070.  A9h return column of viewport origin in next byte
  7071.  AAh return height of virtual screen in next byte
  7072.  ABh return width of virtual screen in next byte
  7073.  AFh return current video mode in next byte
  7074.  C0h return current logical cursor position in next two bytes
  7075.  C1h return top left corner of scrolling region in next two bytes
  7076.  C2h return current window position in next two bytes
  7077.  C3h return current window size in next two bytes
  7078.  C4h return current viewport origin in next two bytes
  7079.  C5h return current virtual screen size in next two bytes
  7080.  D0h \ overwritten with D0h if frames may fall off screen edge
  7081.  D1h /               D1h if frames always displayed entirely
  7082.  D2h \ overwritten with D2h if DESQview controls color palette
  7083.  D3h /               D3h if application changes color palette
  7084.  D4h \ overwritten with D4h if window visible
  7085.  D5h /               D5h if window hidden
  7086.  D6h \ overwritten with D6h if window has frame
  7087.  D7h /               D7h if window unframed
  7088.  D8h \ overwritten with D8h if reading characters from window
  7089.  D9h /               D9h if reading attributes from window
  7090.  DAh \ overwritten with DAh if using logical attributes
  7091.  DBh /               DBh if using physical attributes
  7092.  DCh \ overwritten with DCh if TTY control char interpretation on
  7093.  DDh /               DDh if TTY control char interpretation off
  7094.  DEh \ overwritten with DEh if writing both characters and attributes
  7095.  DFh /               DFh if leaving attributes untouched
  7096.  E2h return current color in next byte
  7097.  ECh get logical attributes for window contents
  7098.     BYTE execute call if currently in specified video mode
  7099.         bit 7    monochrome
  7100.         bit 6    color text, EGA/VGA graphics
  7101.         bit 5    medium-resolution CGA graphics
  7102.         bit 4    high-resolution CGA graphics
  7103.     BYTE which attributes to get
  7104.         bit 7    unused???
  7105.         bits 4-6 first attribute to get - 1
  7106.         bits 0-3 number of consecutive attributes
  7107.     N BYTEs buffer to hold attributes
  7108.  EDh get logical attributes for window frame
  7109.     BYTE execute call if currently in video mode (see opcode ECh)
  7110.     BYTE which attributes to get
  7111.         bit 7    unused???
  7112.         bits 4-6 first attribute to get - 1
  7113.         bits 0-3 number of consecutive attributes
  7114.     N BYTEs buffer to hold attributes
  7115.  EEh get characters for window frame
  7116.     BYTE execute call if currently in video mode (see opcode ECh)
  7117.     BYTE which attributes to get
  7118.         bit 7    unused???
  7119.         bits 4-6 first char to get - 1
  7120.         bits 0-3 number of consecutive chars
  7121.     N BYTEs buffer to hold chars
  7122.  EFh return first N characters of current window name
  7123.     BYTE    max length of returned name
  7124.     N BYTEs buffer to hold window name
  7125.  F3h return contents of specified field
  7126.     BYTE field number
  7127.     N BYTEs buffer to hold field contents (size equal to field size)
  7128.  F5h get field table entry
  7129.     BYTE field number
  7130.     7-8 BYTEs buffer to hold field table entry (see #0333)
  7131.     Notes:    DV < 2.26 always returns 7 bytes
  7132.         DV 2.26+ w/ APILEVEL < 2.26 returns 8 bytes iff field table
  7133.           is using 8-byte entries and eighth byte after    F5h is E7h
  7134.           (NOP); otherwise, 7 bytes are returned
  7135.         DV 2.26+ w/ APILEVEL > 2.26 returns 7 or 8 bytes depending
  7136.           on the field table entry size
  7137.  F6h get type of a field
  7138.     BYTE field number
  7139.     BYTE type
  7140.  FCh get field table header
  7141.     6 BYTEs buffer to store field table header (see #0331)
  7142.  
  7143. (Table 0336)
  7144. Values for MODE 10h "MANAGER STREAM" opcodes (valid only for those listed):
  7145.  00h allow window to be moved horizontally
  7146.  01h allow window to be moved vertically
  7147.  02h allow window to change width
  7148.  03h allow window to change height
  7149.  04h allow window to be scrolled horizontally
  7150.  05h allow window to be scrolled vertically
  7151.  06h allow "Close Window" menu selection for application
  7152.  07h allow "Hide Window" menu selection for application
  7153.  08h allow application to be suspended ("Rearrange/Freeze")
  7154.  0Eh allow "Scissors" menu
  7155.  10h allow DESQview main menu to be popped up
  7156.  11h allow "Switch Windows" menu
  7157.  12h allow "Open Window" menu
  7158.  13h allow "Quit" menu selection
  7159.  20h-33h opposite of 00h-13h, disallow specified action
  7160.  40h notify if horizontal position of window changes
  7161.  41h notify if vertical position of window changes
  7162.  42h notify if width of window changes
  7163.  43h notify if height of window changes
  7164.  44h notify if window scrolled horizontally
  7165.  45h notify if window scrolled vertically
  7166.  46h notify if window is closed--program has to clean up and exit itself
  7167.  47h notify if window is hidden
  7168.  48h notify if "?" on main menu selected
  7169.  49h notify if pointer message sent to window
  7170.  4Ah notify if window is placed in foreground
  7171.  4Bh notify if window is placed in background
  7172.  4Ch notify if video mode changes
  7173.  4Dh notify if "Scissors" menu "Cut" option selected
  7174.  4Eh notify if "Scissors" menu "Copy" option selected
  7175.  4Fh notify if "Scissors" menu "Paste" option selected
  7176.  50h notify if DESQview main menu about to pop up
  7177.  51h notify if DESQview main menu popped down
  7178.  60h-71h     opposite of 40h-51h: don't notify on specified event
  7179.  84h attach window to parent task's window (both move together)
  7180.  85h detach window from parent task's window (may move independently)
  7181.  86h disable background operation for application
  7182.  87h enable running in background
  7183.  88h set minimum size of physical window
  7184.     BYTE rows
  7185.     BYTE columns
  7186.  89h set maximum size of physical window
  7187.     BYTE rows
  7188.     BYTE cols
  7189.  8Ah set primary asynchronous notification routine (see #0338)
  7190.     DWORD address of routine, 0000h:0000h means none (see also below)
  7191.  8Bh set async notification parameter
  7192.     DWORD 32-bit value passed to 8Ah async routine in DS:SI
  7193.  ACh (DV2.2+) perform regular select field attribute processing
  7194.  ADh (DV2.2+) protect attributes in selected field from being lost
  7195.  AEh make window default notify window for owning app (API level 2.00+)
  7196.  AFh set selected field marker character
  7197.     BYTE character to display at left edge of selected fields
  7198.  BCh set standard field processing mode
  7199.  BDh set alternate field processing mode (enables cursor pad for menus)
  7200.  BEh disables changing reverse logical attributes with ECh opcode
  7201.  BFh enables changing reverse logical attributes with ECh opcode
  7202.  C0h make current window topmost in system
  7203.  C1h force current process into foreground
  7204.  C2h make current window topmost in process
  7205.  C3h position mouse pointer relative to origin of current field
  7206.     BYTE rows below upper left corner of field
  7207.     BYTE columns to right of upper left corner of field
  7208.  C4h position mouse pointer relative to origin of given field
  7209.     BYTE field number
  7210.     BYTE rows below upper left corner of field
  7211.     BYTE columns to right of upper left corner of field
  7212.  C5h orphan current window (also hides it)
  7213.     Note: must be last in stream; all subsequent commands ignored
  7214.  C6h show all windows for this process
  7215.  C7h hide all windows for this process
  7216.  C8h suspend process and hide all its windows
  7217.  C9h force current process into background
  7218.  CAh make current window bottom-most in process
  7219.  CBh cancel current window manager operation, remove DV menu, give control
  7220.       to topmost application
  7221.  CCh orphan window and give it to the system for use as paste data
  7222.  CEh reorder windows
  7223.     DWORD pointer to null-terminated list of words; each word is segment
  7224.           of object handle for a window
  7225.  FFh no operation
  7226.  
  7227. (Table 0337)
  7228. Values for MODES 14h to 1Fh "USER STREAMS":
  7229.     normally NOPs, but may be defined by SETESC message to invoke FAR
  7230.     routines, one for each mode number
  7231.       on entry to handler,
  7232.         DS:SI -> first byte of actual stream (not header)
  7233.         CX = number of bytes in stream
  7234.         ES:DI = window's handle
  7235.  
  7236. (Table 0338)
  7237. Values asynchronous notification routine defined by man.stream 8Ah called with:
  7238.     ES:DI = handle of window
  7239.     DS:SI is 32-bit value set by 8Bh manager stream opcode
  7240.        mailbox contains message indicating event
  7241.           Opcode
  7242.            40h  horizontal movement
  7243.            DWORD object handle of window
  7244.            BYTE     new row
  7245.            BYTE     new col
  7246.            41h  vertical movement
  7247.            DWORD object handle of window
  7248.            BYTE     new row
  7249.            BYTE     new col
  7250.            42h  horizontal size change
  7251.            DWORD object handle of window
  7252.            BYTE     new rows
  7253.            BYTE     new cols
  7254.            43h  vertical size change
  7255.            DWORD object handle of window
  7256.            BYTE     new rows
  7257.            BYTE     new cols
  7258.            44h  scrolled horizontally
  7259.            DWORD object handle of window
  7260.            BYTE     mouse row within window
  7261.            BYTE     mouse column within window
  7262.            BYTE     field mouse is on, 0 if none
  7263.            BYTE     amount moved: >0 right, <0 left, 0 done
  7264.            45h  scrolled vertically
  7265.            DWORD object hande of window
  7266.            BYTE     mouse row within window
  7267.            BYTE     mouse column within window
  7268.            BYTE     field mouse is on, 0 if none
  7269.            BYTE     amount moved: >0 down, <0 up, 0 done
  7270.            46h  window close request
  7271.            DWORD object handle of window
  7272.            BYTE     mouse pointer row
  7273.            BYTE     mouse pointer column
  7274.            BYTE     field mouse is on, 0 if none
  7275.            47h  application's windows hidden
  7276.            48h  Help for Program selected
  7277.            DWORD object handle of window
  7278.            BYTE     mouse pointer row
  7279.            BYTE     mouse pointer column
  7280.            BYTE     field mouse is on, 0 if none
  7281.            49h  pointer message sent to window
  7282.            DWORD pointer handle which received message
  7283.            4Ah  switched to window from another ("raise")
  7284.            4Bh  switched away from the window ("lower")
  7285.            4Ch  video mode changed
  7286.            BYTE new BIOS video mode
  7287.            4Dh  Scissors/cUt selected
  7288.            DWORD object handle of window
  7289.            BYTE     row of upper left corner
  7290.            BYTE     column of upper left corner
  7291.            BYTE     field number ul corner is in, 0=none
  7292.            DWORD handle of orphaned window created with
  7293.              copy of data from specified region
  7294.            BYTE     height of region
  7295.            BYTE     width of region
  7296.            4Eh  Scissors/Copy selected
  7297.            DWORD object handle of window
  7298.            BYTE     row of upper left corner
  7299.            BYTE     column of upper left corner
  7300.            BYTE     field number ul corner is in, 0=none
  7301.            DWORD handle of orphaned window created with
  7302.              copy of data from specified region
  7303.            BYTE     height of region
  7304.            BYTE     width of region
  7305.            4Fh  Scissors/Paste selected
  7306.            DWORD object handle of window
  7307.            BYTE     row of upper left corner
  7308.            BYTE     column of upper left corner
  7309.            BYTE     field number ul corner is in, 0=none
  7310.            DWORD handle of orphaned window with data
  7311.            BYTE     height of region
  7312.            BYTE     width of region
  7313.             Note: orphaned data window should be adopted or freed
  7314.                 when done
  7315.            50h  main menu about to pop up
  7316.            51h  main menu popped down
  7317. Return: all registers unchanged
  7318. --------Q-1512--BH06-------------------------
  7319. INT 15 - DESQview 2.20+ - SEND MESSAGE - "SETPRI" - SET PRIORITY WITHIN OBJECTQ
  7320.     AH = 12h
  7321.     BH = 06h
  7322.     BL = object
  7323.         00h object handle in DWORD on top of stack
  7324.         mailbox, keyboard, pointer, or timer
  7325.         (DV 2.50+) window
  7326.         01h (DV 2.50+) current task's window
  7327.         04h given task's keyboard (task's handle on top of stack)
  7328.         05h current task's default keyboard
  7329.     STACK: DWORD new priority of object in task's OBJECTQ
  7330.             (new priority of task if window handle)
  7331. Notes:    initially all objects have the same default value.  Should only make
  7332.       relative adjustments to this default value.
  7333.     when changing priorities, all objects already on the objectq are
  7334.       reordered
  7335.     for window handles, only the non-blocked task(s) with the highest
  7336.       priority receive CPU time under DESQview 2.50-2.52; the default
  7337.       priority is 0Ah
  7338. SeeAlso: AH=12h/BH=07h,AH=12h/BH=87h
  7339. --------Q-1512--BH07-------------------------
  7340. INT 15 - DESQview 2.20+ - SEND MESSAGE - "GETPRI" - GET PRIORITY WITHIN OBJECTQ
  7341.     AH = 12h
  7342.     BH = 07h
  7343.     BL = object
  7344.         00h object handle in DWORD on top of stack
  7345.         mailbox, keyboard, pointer, or timer
  7346.         (DV 2.50+) window
  7347.         01h (DV 2.50+) current task's window
  7348.         04h given task's keyboard (task's handle on top of stack)
  7349.         05h current task's default keyboard
  7350. Return: STACK: DWORD object priority
  7351. Note:    initially all objects have the same default value.  Should only make
  7352.       relative adjustments to this default value.
  7353. SeeAlso: AH=12h/BH=06h
  7354. --------Q-1512--BH08-------------------------
  7355. INT 15 - TopView - SEND MESSAGE - "SIZEOF" - GET OBJECT SIZE
  7356.     AH = 12h
  7357.     BH = 08h
  7358.     BL = object
  7359.         00h handle in DWORD on top of stack
  7360.         window: total character positions in window
  7361.         timer: elapsed time since timer started
  7362.         pointer: number of messages queued to pointer object
  7363.         panel: number of panels in panel file
  7364.         keyboard: number of input buffers queued
  7365.         01h total chars in current task's default window
  7366.         02h number of messages in task's mailbox (task's handle on stack)
  7367.         03h number of messages in current task's mailbox
  7368.         04h number of input buffers queued in task's kbd (handle on stack)
  7369.         05h number of input buffers queued for current task's default kbd
  7370.         06h number of objects queued in OBJECTQ (task's handle on stack)
  7371.         07h number of objects queued in current task's OBJECTQ
  7372.         0Ch (DV 2.26+) total chars in window owning handle on top of stack
  7373.         0Dh (DV 2.26+) total chars in parent task's window
  7374. Return: DWORD on top of stack is result
  7375. Note:    for panel objects, a count of zero is returned if no panel file is open
  7376.       for the object
  7377. SeeAlso: AH=12h/BH=04h,AH=12h/BH=09h
  7378. --------Q-1512--BH09-------------------------
  7379. INT 15 - TopView - SEND MESSAGE - "LEN" - GET OBJECT LENGTH
  7380.     AH = 12h
  7381.     BH = 09h
  7382.     BL = object
  7383.         00h handle in DWORD on top of stack
  7384.         window: get chars/line
  7385.         timer: get 1/100 seconds remaining before timer expires
  7386.         mailbox: (DV/X) get number of bytes queued to mailbox
  7387.         01h get number of chars/line in current task's default window
  7388.         0Ch (DV 2.26+) get chars/line in window owning handle on top of stk
  7389.         0Dh (DV 2.26+) get chars/line in parent task's window
  7390. Return: DWORD on top of stack is length
  7391. SeeAlso: AH=12h/BH=08h
  7392. --------Q-1512--BH0A-------------------------
  7393. INT 15 - TopView - SEND MESSAGE - "ADDTO" - WRITE CHARS AND ATTRIBS TO WINDOW
  7394.     AH = 12h
  7395.     BH = 0Ah
  7396.     BL = window to write to
  7397.         00h window handle is DWORD on top of stack
  7398.         01h current task's default window
  7399.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  7400.         0Dh (DV 2.26+) default window of parent of current task
  7401.     STACK:    DWORD count of attributes
  7402.         DWORD address of attribute string
  7403.         DWORD count of characters
  7404.         DWORD address of character string
  7405. Notes:    if one string is longer than the other, the shorter one will be reused
  7406.       until the longer one is exhausted
  7407.     the cursor is left just after the last character written
  7408. SeeAlso: AH=12h/BH=0Bh"WINDOW"
  7409. --------Q-1512--BH0A-------------------------
  7410. INT 15 - TopView - SEND MESSAGE - "ADDTO" - SEND MAILBOX MESSAGE/STAT BY VALUE
  7411.     AH = 12h
  7412.     BH = 0Ah
  7413.     BL = mailbox to write to
  7414.         00h handle is DWORD on top of stack
  7415.         02h default mailbox of task whose handle is on top of stack
  7416.         03h current task's default mailbox
  7417.     STACK:    DWORD    status (low byte)
  7418.         DWORD    length of message
  7419.         DWORD    address of message
  7420. Notes:    the message is copied into either system or common memory
  7421.     insufficient memory normally causes the process to be aborted; under
  7422.       DESQview 2.2+, failed writes may return CF set instead (see AX=DE15h)
  7423. SeeAlso: AH=12h/BH=0Bh"MAILBOX"
  7424. --------Q-1512--BH0A-------------------------
  7425. INT 15 - TopView - SEND MESSAGE - "ADDTO" - SET OBJECT BITS
  7426.     AH = 12h
  7427.     BH = 0Ah
  7428.     BL = object
  7429.         00h handle is DWORD on top of stack
  7430.         timer: start timer for specified interval
  7431.         pointer: set control flags (see #0340)
  7432.         keyboard: set control flags (see #0339)
  7433.         04h set control flags on KEYBOARD object (handle on top of stack)
  7434.         05h set control flags on task's default KEYBOARD object
  7435.     STACK: (if timer)   DWORD duration in 1/100 seconds
  7436.            (otherwise)  DWORD bits to set
  7437. SeeAlso: AH=12h/BH=0Bh"OBJECT"
  7438.  
  7439. Bitfields for DESQview keyboard object bits:
  7440. Bit(s)    Description    (Table 0339)
  7441.  15    reserved, can't be set
  7442.  14    unused
  7443.  13    reserved, can't be set
  7444.  12-6    unused
  7445.  5    (DV 2.2+) exclusive input
  7446.  4    filter all keys (used with handler established by SETESC)
  7447.     if 0, only keys that would normally be displayed are filtered
  7448.  3    program continues executing while input in progress
  7449.  2    insert mode active for field mode
  7450.  1    hardware cursor displayed when task is hardware cursor owner
  7451.     must be set if keyboard in field mode and field table includes input
  7452.       fields
  7453.  0    keyboard is in field mode rather than keystroke mode
  7454.  
  7455. Bitfields for DESQview pointer object bits:
  7456. Bit(s)    Description    (Table 0340)
  7457.  15    reserved, can't be set
  7458.  14-8    unused
  7459.  7    mouse pointer is hidden while in window
  7460.  6    get messages even if window not topmost
  7461.  5    get messages even if window not foreground
  7462.  4    multiple clicks separated by less than 1/3 second are counted and
  7463.       returned in a single message
  7464.  3    pointer position is relative to screen origin, not window origin
  7465.  2    send message on button release as well as button press
  7466.  1    (DV 2.23+) send message with row=FFFFh and col=FFFFh whenever the
  7467.       pointer leaves the window
  7468.  0    send message only on button activity, not movement
  7469.     DV-specific, and INT 15/AX=DE0Fh must have been called first
  7470. --------Q-1512--BH0B-------------------------
  7471. INT 15 - TopView - SEND MESSAGE - "SUBFROM" - WRITE ATTRIBUTES TO WINDOW
  7472.     AH = 12h
  7473.     BH = 0Bh
  7474.     BL = window to write attributes to
  7475.         00h handle is DWORD on top of stack
  7476.         01h current task's default window
  7477.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  7478.         0Dh (DV 2.26+) default window of parent of current task
  7479.     STACK:    DWORD number of attributes to write
  7480.         DWORD address of attributes
  7481. Note:    the attributes are written starting at the current cursor position; the
  7482.       cursor is left just after the last position written
  7483. SeeAlso: AH=12h/BH=0Ah"WINDOW"
  7484. --------Q-1512--BH0B-------------------------
  7485. INT 15 - TopView - SEND MESSAGE - "SUBFROM" - SEND MAILBOX MESSAGE/STAT BY REF
  7486.     AH = 12h
  7487.     BH = 0Bh
  7488.     BL = mailbox to write to
  7489.         00h handle is DWORD on top of stack
  7490.         02h default mailbox of task whose handle is on top of stack
  7491.         03h current task's default mailbox
  7492.     STACK:    DWORD    status (low byte)
  7493.         DWORD    length of message
  7494.         DWORD    address of message
  7495. Notes:    only a pointer to the message is stored, but the write may still fail
  7496.       due to insufficient memory
  7497.     under DV 2.2+, failed mailbox writes may return CF set (see AX=DE15h)
  7498. SeeAlso: AH=12h/BH=0Ah"MAILBOX"
  7499. --------Q-1512--BH0B-------------------------
  7500. INT 15 - TopView - SEND MESSAGE - "SUBFROM" - REMOVE OBJECT FROM OBJECTQ
  7501.     AH = 12h
  7502.     BH = 0Bh
  7503.     BL = OBJECTQ from which to remove all copies of a particular object
  7504.         06h OBJECTQ of task whose handle is on top of stack
  7505.         07h task's default OBJECTQ
  7506.     STACK:    DWORD    handle of object to remove
  7507. Note:    should be sent whenever an object is erased or closed
  7508. --------Q-1512--BH0B-------------------------
  7509. INT 15 - TopView - SEND MESSAGE - "SUBFROM" - RESET OBJECT BITS
  7510.     AH = 12h
  7511.     BH = 0Bh
  7512.     BL = object
  7513.         00h handle is DWORD on top of stack
  7514.         pointer: reset control flags
  7515.         keyboard: reset control flags
  7516.         04h clear control flags on KEYBOARD object (handle on top of stack)
  7517.         05h clear control flags on task's default KEYBOARD object
  7518.     STACK:    DWORD    which bits to clear (see #0339,#0340)
  7519. SeeAlso: AH=12h/BH=0Ah"OBJECT"
  7520. --------Q-1512--BH0C-------------------------
  7521. INT 15 - TopView - SEND MESSAGE - "OPEN" - OPEN OBJECT
  7522.     AH = 12h
  7523.     BH = 0Ch
  7524.     BL = object
  7525.         00h handle is DWORD on top of stack
  7526.         window:      fill with given character from scroll origin to end
  7527.         keyboard: attach to a window
  7528.         timer:      open
  7529.         pointer:  start taking input for window
  7530.         panel:      associate with a panel file
  7531.         01h fill task's default window with given char from scrl org to end
  7532.         02h open given task's mailbox for input (task's handle on stack)
  7533.         03h open current task's mailbox
  7534.         04h attach a KEYBOARD to a window (handle on top of stack)
  7535.         05h attach task's default KEYBOARD to a window
  7536.         06h open a task's OBJECTQ (task's handle on top of stack)
  7537.         07h open current task's OBJECTQ
  7538.         0Ch (DV 2.26+) fill def window of task owning handle on top of stck
  7539.         0Dh (DV 2.26+) fill default window of parent of current task
  7540.      STACK: (if window)   DWORD character to fill with
  7541.         (if keyboard) DWORD handle of window to attach to
  7542.         (if pointer)  DWORD handle of window to attach to
  7543.         (if panel)    DWORD length of filename or resident panel
  7544.                   DWORD address of filename or resident panel
  7545.         (otherwise)   nothing
  7546. Notes:    if first byte of panel file name is 1Bh, then the "name" IS a panel
  7547.     if first two bytes of panel file "name" are C0hC3h, then the "name" IS
  7548.       the panel file
  7549.     result code of open may be retrieved with STATUS message
  7550.     logical cursor is left at scroll origin after filling window
  7551.     the task opening a mailbox becomes its owner, and the only task allowed
  7552.       to read the mailbox
  7553.     messages are only sent to a pointer object when the mouse is positioned
  7554.       in the window to which the pointer has been attached
  7555.     there is no need to explicitly open a timer object, as ADDTO and WRITE
  7556.       messages automatically open the timer
  7557. SeeAlso: AH=12h/BH=0Dh,AH=12h/BH=14h"LOCK"
  7558. --------Q-1512--BH0D-------------------------
  7559. INT 15 - TopView - SEND MESSAGE - "CLOSE" - CLOSE OBJECT
  7560.     AH = 12h
  7561.     BH = 0Dh
  7562.     BL = object
  7563.         00h handle is DWORD on top of stack
  7564.         timer:      close
  7565.         keyboard: detach from window and discard queued input
  7566.         pointer:  stop taking input
  7567.         panel:      close
  7568.         mailbox:  close, unlock, and discard any pending messages
  7569.         02h close given task's mailbox (task's handle on top of stack)
  7570.         03h close task's default mailbox
  7571.         04h close KEYBOARD object (handle on top of stack)
  7572.         05h close task's default KEYBOARD
  7573.         06h close given task's OBJECTQ (task's handle on top of stack)
  7574.         07h close current task's OBJECTQ
  7575. Notes:    when an OBJECTQ is closed, each object in the OBJECTQ is sent an
  7576.       ERASE message (AH=12h/BH=0Eh)
  7577.     when a panel object is closed, the panel file and any panels currently
  7578.       in use are freed; window and keyboard objects created by APPLY are
  7579.       not affected, but field mode input ceases
  7580.     open but idle timer objects consume a small amount of CPU time
  7581. SeeAlso: AH=12h/BH=0Ch,AH=12h/BH=0Eh,AH=12h/BH=14h"LOCK"
  7582. --------Q-1512--BH0E-------------------------
  7583. INT 15 - TopView - SEND MESSAGE - "ERASE" - ERASE OBJECT
  7584.     AH = 12h
  7585.     BH = 0Eh
  7586.     BL = object
  7587.         00h handle is DWORD on top of stack
  7588.         window:      clear from scroll origin to end of window
  7589.         keyboard: discard input
  7590.         timer:      cancel current interval
  7591.         pointer:  discard all pending messages
  7592.         mailbox:  discard all pending messages
  7593.         01h clear task's default window from scroll origin to end
  7594.         02h discard all queued messages in mailbox (handle on top of stack)
  7595.         03h discard all queued messages in current task's default mailbox
  7596.         04h discard all input queued to KEYBOARD (handle on top of stack)
  7597.         05h discard all input queued to task's default KEYBOARD
  7598.         06h remove all objects from OBJECTQ (task's handle on top of stack)
  7599.         07h remove all objects from current task's OBJECTQ
  7600.         0Ch (DV 2.26+) clear window of task owning handle on top of stack
  7601.         0Dh (DV 2.26+) clear default window of parent of current task
  7602. Note:    when an OBJECTQ is erased, each object in the OBJECTQ is also erased
  7603. SeeAlso: AH=12h/BH=02h
  7604. --------Q-1512--BH0F-------------------------
  7605. INT 15 - TopView - SEND MESSAGE - "STATUS" - GET OBJECT STATUS
  7606.     AH = 12h
  7607.     BH = 0Fh
  7608.     BL = object
  7609.         00h handle is DWORD on top of stack
  7610.         timer:     is it running?
  7611.         pointer: return status of last message
  7612.         panel:     verify success of last OPEN or APPLY
  7613.         02h return status of last msg READ from mailbox (handle on stack)
  7614.         03h return status of last msg READ from task's default mailbox
  7615.         04h get stat of last msg from task's KEYBOARD (task handle on stk)
  7616.         05h get status of last msg from task's default KEYBOARD
  7617.         06h return whether OBJECTQ is open or not (handle on top of stack)
  7618.         07h return whether task's default OBJECTQ is open or not
  7619. Return: DWORD on top of stack is status
  7620. Notes:    if object is a panel object, the status indicates the error code:
  7621.       00h successful
  7622.       14h panel name not in panel directory
  7623.       15h not enough memory to apply panel
  7624.       16h invalid panel format
  7625.       17h panel file already open
  7626.       81h-92h  DOS error codes+80h            \  codes > 80h indicate
  7627.       95h not enough memory to open panel file     > that the panel was
  7628.       98h null panel file name            /  not opened
  7629.     if object is a timer, the status is:
  7630.       00000000h open but not running
  7631.       40000000h open and running
  7632.       80000000h closed
  7633.     if object is an OBJECTQ, the status is:
  7634.       00000000h open
  7635.       80000000h closed
  7636.     if object is a keyboard in keystroke mode, the status is the extended
  7637.       character code (scan code) of the last keystroke
  7638.     if object is a keyboard in field mode, the status indicates the reason
  7639.       for the last return from the field manager
  7640.       00h Enter key pressed
  7641.       01h Button 1 or keystroke selection
  7642.       02h Button 2
  7643.       03h validation
  7644.       04h auto Enter on field
  7645.       1Bh Escape pressed
  7646.       46h ^Break pressed
  7647.       other: extended code for key terminating input
  7648.     the status of mailbox messages sent by the window manager is always 80h
  7649.     the status of a pointer message is the same as the status field in the
  7650.       message
  7651. SeeAlso: AH=12h/BH=04h"READ"
  7652. --------Q-1512--BH10-------------------------
  7653. INT 15 - TopView - SEND MESSAGE - "EOF" - GET OBJECT EOF STATUS
  7654.     AH = 12h
  7655.     BH = 10h
  7656.     BL = object
  7657.         00h handle is DWORD on top of stack
  7658.         window: return TRUE if logical cursor past end of window
  7659.         mailbox: ???
  7660.         01h returns TRUE if logical cursor past end of task's def window
  7661.         02h return ??? for task's mailbox (task's handle on top of stack)
  7662.         03h return ??? for current task's mailbox
  7663.         0Ch (DV 2.26+) check log crsr of window owning handle on top of stk
  7664.         0Dh (DV 2.26+) check log cursor of window of parent task
  7665. Return: DWORD on top of stack is status
  7666. --------Q-1512--BH11-------------------------
  7667. INT 15 - TopView - SEND MESSAGE - "AT" - POSITION OBJECT CURSOR
  7668.     AH = 12h
  7669.     BH = 11h
  7670.     BL = window for which to move cursor
  7671.         00h window's handle is DWORD on top of stack
  7672.         01h task's default window
  7673.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  7674.         0Dh (DV 2.26+) default window of parent of current task
  7675.     STACK: DWORD column
  7676.            DWORD row
  7677. --------Q-1512--BH11-------------------------
  7678. INT 15 - TopView - SEND MESSAGE - "SETNAME" - ASSIGN NAME TO MAILBOX
  7679.     AH = 12h
  7680.     BH = 11h
  7681.     BL = mailbox to name
  7682.         00h DWORD on top of stack is mailbox handle
  7683.         02h use given task's mailbox (task's handle on top of stack)
  7684.         03h use current task's default mailbox
  7685.     STACK: DWORD length of name
  7686.            DWORD address of name
  7687. SeeAlso: AH=12h/BH=12h"GETNAME",AX=DE0Eh
  7688. --------Q-1512--BX1100-----------------------
  7689. INT 15 - TopView - SEND MESSAGE - "SETSCALE" - SET POINTER SCALE FACTOR
  7690.     AH = 12h
  7691.     BX = 1100h
  7692.     STACK: DWORD object handle for pointer object
  7693.            DWORD number of colums to scale pointer position to
  7694.            DWORD number of rows to scale pointer position to
  7695. SeeAlso: AH=12h/BX=1200h
  7696. --------Q-1512--BH12-------------------------
  7697. INT 15 - TopView - SEND MESSAGE - "READN" - GET NEXT N OBJECT BYTES
  7698.     AH = 12h
  7699.     BH = 12h
  7700.     BL = window to read from
  7701.         00h handle is DWORD on top of stack
  7702.         01h read next N chars or attributes on task's default window
  7703.         0Ch (DV 2.26+) read window of task owning handle on top of stack
  7704.         0Dh (DV 2.26+) read default window of parent of current task
  7705.     STACK: DWORD count
  7706. Return: STACK: DWORD number of bytes actually read
  7707.            DWORD address of buffer containing data
  7708. Notes:    reading starts at the current logical cursor position; the cursor is
  7709.       updated to point at the character following the last one read
  7710.     any translucent blanks (FFh) which are visible on screen are changed
  7711.       to the character which is seen through them
  7712.     the string produced by the read is placed in an input buffer which may
  7713.       be reused by the next READ or READN of a window
  7714.     window stream opcodes D8h and D9h determine whether the read returns
  7715.       characters or attributes
  7716. SeeAlso: AH=12h/BH=04h"WINDOW",AH=12h/BH=05h"WINDOW"
  7717. --------Q-1512--BH12-------------------------
  7718. INT 15 - DESQview 2.50+ - SEND MESSAGE - "GETNAME" - GET NAME OF MAILBOX
  7719.     AH = 12h
  7720.     BH = 12h
  7721.     BL = mailbox for which to retrieve name
  7722.         00h DWORD on top of stack is mailbox handle
  7723.         02h use given task's mailbox (task's handle on top of stack)
  7724.         03h use current task's default mailbox
  7725.     STACK: DWORD length of buffer for name
  7726.            DWORD pointer to buffer
  7727. Return: STACK: DWORD length of returned name (or size of buffer, if less)
  7728. Program: DESQview 2.5x is distributed as part of DESQview/X 1.0x
  7729. Note:    the returned name is not NUL-terminated
  7730. SeeAlso: AH=12h/BH=11h"SETNAME",AX=DE0Eh
  7731. --------Q-1512--BX1200-----------------------
  7732. INT 15 - TopView - SEND MESSAGE - "GETSCALE" - GET POINTER SCALE FACTOR
  7733.     AH = 12h
  7734.     BX = 1200h
  7735.     STACK: DWORD object handle for pointer
  7736. Return: STACK: DWORD pointer pos scaled as if window were this many colums wide
  7737.            DWORD pointer pos scaled as if window were this many rows high
  7738. SeeAlso: AH=12h/BX=1100h
  7739. --------Q-1512--BH13-------------------------
  7740. INT 15 - TopView - SEND MESSAGE - "REDRAW" - REDRAW WINDOW
  7741.     AH = 12h
  7742.     BH = 13h
  7743.     BL = window object
  7744.         00h DWORD on top of stack is handle for window to redraw
  7745.         01h redraw task's default window
  7746.         0Ch (DV 2.26+) redraw window of task owning handle on top of stack
  7747.         0Dh (DV 2.26+) redraw default window of parent of current task
  7748. SeeAlso: AH=12h/BH=05h"WINDOW",AH=12h/BH=0Eh
  7749. --------Q-1512--BH13-------------------------
  7750. INT 15 - DESQview 2.50+ - SEND MESSAGE - "READINTO" - GET NEXT MAIL MESSAGE
  7751.     AH = 12h
  7752.     BH = 13h
  7753.     BL = mailbox from which to read
  7754.         00h DWORD on top of stack is mailbox handle
  7755.         02h use given task's mailbox (task's handle on top of stack)
  7756.         03h use current task's default mailbox
  7757.     STACK: DWORD size of buffer in bytes
  7758.            DWORD pointer to buffer
  7759. Return: STACK: DWORD number of bytes read
  7760. Program: DESQview 2.5x is distributed as part of DESQview/X 1.0x
  7761. Notes:    this call blocks if no input is available, but will return less than
  7762.       the requested number of bytes if some (but insufficient) data is
  7763.       available
  7764.     use this call instead of AH=12h/BH=04h if the mailbox has flag bits
  7765.       4 or 5 set, as common memory may be exhausted by that call when
  7766.       attempting to read the next message
  7767. SeeAlso: AH=12h/BH=04h"READ",AH=12h/BH=05h,AH=12h/BH=16h
  7768. --------Q-1512--BX1300-----------------------
  7769. INT 15 - TopView - SEND MESSAGE - "SETICON" - SPECIFY POINTER ICON
  7770.     AH = 12h
  7771.     BX = 1300h
  7772.     STACK: DWORD object handle for pointer
  7773.            DWORD character to use for pointer
  7774. Return: STACK popped
  7775. --------Q-1512--BH14-------------------------
  7776. INT 15 - TopView - SEND MESSAGE - "SETESC" - SET ESCAPE ROUTINE ADDRESS
  7777.     AH = 12h
  7778.     BH = 14h
  7779.     BL = message modifier
  7780.         00h handle is DWORD on top of stack
  7781.         01h define user stream
  7782.         04h intercept keystrokes from KEYBOARD to window (handle on stack)
  7783.         05h intercept keystrokes from task's default KEYBOARD to a window
  7784.     STACK: (if window)   DWORD user stream number (14h-1Fh)
  7785.                  DWORD address of FAR user stream handler
  7786.            (if keyboard) DWORD address of FAR filter function (see #0341)
  7787. Return: STACK popped
  7788.  
  7789. (Table 0341)
  7790. Values keyboard filter function is called with when keyboard is in field mode:
  7791.     AL = character
  7792.     AH = 00h or extended ASCII code if AL = 00h
  7793.     BL = field number
  7794.     CH = cursor column
  7795.     CL = cursor row
  7796.     DL = field type modifier (sixth item in field table entry)
  7797.     DH = seventh item in field table entry
  7798.     ES:SI = window's handle
  7799.     DS:DI -> field table entry for field containing the cursor
  7800. Return:    AH = action to take
  7801.         00h use keystroke
  7802.         01h ignore keystroke
  7803.         FFh beep and ignore keystroke
  7804. Note: the filter function is not allowed to make INT 15, DOS, or BIOS calls
  7805. --------Q-1512--BH14-------------------------
  7806. INT 15 - TopView - SEND MESSAGE - "LOCK" - REQUEST EXCLUSIVE ACCESS TO RESOURCE
  7807.     AH = 12h
  7808.     BH = 14h
  7809.     BL = object
  7810.         00h mailbox handle is DWORD on top of stack
  7811.         02h use given task's mailbox (task's handle on top of stack)
  7812.         03h use current task's default mailbox
  7813. Return: STACK popped if BL=00h
  7814. Note:    release exclusive access by sending CLOSE message to mailbox
  7815.     access may be requested multiple times, and requires multiple CLOSEs
  7816. SeeAlso: AH=12h/BH=0Dh
  7817. --------Q-1512--BH15-------------------------
  7818. INT 15 - DESQview v2.20+ - SEND MESSAGE - "SETFLAGS" - SET OBJECT FLAGS
  7819.     AH = 12h
  7820.     BH = 15h
  7821.     BL = object
  7822.         00h DWORD on top of stack
  7823.         mailbox, keyboard, or pointer only
  7824.         02h mailbox for task whose handle is on top of stack
  7825.         03h mailbox for current task
  7826.         04h keyboard for task whose handle is on top of stack
  7827.         05h keyboard for current task
  7828.     STACK: DWORD flags (see #0342,#0343)
  7829. Return: STACK popped
  7830. Notes:    only available if the API level has been set to at least 2.20
  7831.     equivalent to performing SUBFROM and ADDTO calls on the object
  7832.     if a mailbox has bits 4 or 5 set, you must use "READINTO" rather than
  7833.       "READ" (see AH=12h/BX=1300h"READINTO") to retrieve messages
  7834. SeeAlso: AH=12h/BH=0Ah,AH=12h/BH=0Bh,AH=12h/BH=16h
  7835.  
  7836. Bitfields for DESQview mailbox object flags:
  7837. Bit(s)    Description    (Table 0342)
  7838.  0    all mail messages in common memory
  7839.  1    allow write even if closed
  7840.  2    don't erase messages when mailbox closed
  7841.  4    (DV/X) append messages with like status and sender (stream-oriented 
  7842.       mail)
  7843.  5    (DV/X) store mail in expanded memory (pool grows as needed)
  7844.  6    (DV/X) make mailbox into non-owned mailbox
  7845.  
  7846. Bitfields for DESQview keyboard object flags:
  7847. Bit(s)    Description    (Table 0343)
  7848.  5    exclusive input when keyboard in use for input
  7849. --------Q-1512--BH16-------------------------
  7850. INT 15 - DESQview v2.20+ - SEND MESSAGE - "GETFLAGS" - GET OBJECT FLAGS
  7851.     AH = 12h
  7852.     BH = 16h
  7853.     BL = object
  7854.         00h DWORD on top of stack
  7855.         mailbox, keyboard, or pointer only
  7856.         02h mailbox for task whose handle is on top of stack
  7857.         03h mailbox for current task
  7858.         04h keyboard for task whose handle is on top of stack
  7859.         05h keyboard for current task
  7860. Return: STACK: DWORD current control flags (see #0342,#0343)
  7861. Notes:    only available if the API level has been set to at least 2.20
  7862.     if a mailbox has bits 4 or 5 set, you must use "READINTO" rather than
  7863.       "READ" (see AH=12h/BH=13h"READINTO") to retrieve messages
  7864. SeeAlso: AH=12h/BH=0Ah,AH=12h/BH=0Bh,AH=12h/BH=13h"READINTO",AH=12h/BH=15h
  7865. --------Q-1512--BH17-------------------------
  7866. INT 15 - DESQview v2.42-2.52 - BUG
  7867.     AH = 12h
  7868.     BH = 17h
  7869.     BL = object
  7870.         00h DWORD on top of stack
  7871.         mailbox, keyboard, or pointer only
  7872.         02h mailbox for task whose handle is on top of stack
  7873.         03h mailbox for current task
  7874.         04h keyboard for task whose handle is on top of stack
  7875.         05h keyboard for current task
  7876. Notes:    due to a fencepost error, message 17h is accepted for mailboxes,
  7877.       keyboards, and pointers, but causes a random branch
  7878.     DESQview v2.50-2.52 are distributed as part of DESQview/X v1.02
  7879. --------Q-1512--BH80-------------------------
  7880. INT 15 - DESQview v2.50+ - SEND MESSAGE 00h WITH ERROR RECOVERY
  7881.     AH = 12h
  7882.     BH = 80h
  7883. Note:    this function is identical to AH=12h/BH=00h, except that DESQview will
  7884.       not pop up a "Programming Error" window, instead returning an error
  7885.       code in AL (see #0344)
  7886. SeeAlso: AH=12h/BH=00h
  7887.  
  7888. (Table 0344)
  7889. Values for DESQview error code:
  7890.  00h    no error
  7891.  01h    invalid values
  7892.  02h    alias invalid
  7893.  03h    handle valid but wrong type
  7894.  04h    invalid handle
  7895. --------Q-1512--BH81-------------------------
  7896. INT 15 - DESQview v2.50+ - SEND MESSAGE 01h WITH ERROR RECOVERY
  7897.     AH = 12h
  7898.     BH = 81h
  7899. Note:    this function is identical to AH=12h/BH=01h, except that DESQview will
  7900.       not pop up a "Programming Error" window, instead returning an error
  7901.       code in AL (see #0344)
  7902. SeeAlso: AH=12h/BH=01h
  7903. --------Q-1512--BH82-------------------------
  7904. INT 15 - DESQview v2.50+ - SEND MESSAGE 02h WITH ERROR RECOVERY
  7905.     AH = 12h
  7906.     BH = 82h
  7907. Note:    this function is identical to AH=12h/BH=02h, except that DESQview will
  7908.       not pop up a "Programming Error" window, instead returning an error
  7909.       code in AL (see #0344)
  7910. SeeAlso: AH=12h/BH=02h
  7911. --------Q-1512--BH83-------------------------
  7912. INT 15 - DESQview v2.50+ - SEND MESSAGE 03h WITH ERROR RECOVERY
  7913.     AH = 12h
  7914.     BH = 83h
  7915. Note:    this function is identical to AH=12h/BH=03h, except that DESQview will
  7916.       not pop up a "Programming Error" window, instead returning an error
  7917.       code in AL (see #0344)
  7918. SeeAlso: AH=12h/BH=03h,AH=12h/BX=0300h
  7919. --------Q-1512--BH84-------------------------
  7920. INT 15 - DESQview v2.50+ - SEND MESSAGE 04h WITH ERROR RECOVERY
  7921.     AH = 12h
  7922.     BH = 84h
  7923. Note:    this function is identical to AH=12h/BH=04h, except that DESQview will
  7924.       not pop up a "Programming Error" window, instead returning an error
  7925.       code in AL (see #0344)
  7926. SeeAlso: AH=12h/BH=04h,AH=12h/BX=0400h
  7927. --------Q-1512--BH85-------------------------
  7928. INT 15 - DESQview v2.50+ - SEND MESSAGE 05h WITH ERROR RECOVERY
  7929.     AH = 12h
  7930.     BH = 85h
  7931. Note:    this function is identical to AH=12h/BH=05h, except that DESQview will
  7932.       not pop up a "Programming Error" window, instead returning an error
  7933.       code in AL (see #0344)
  7934. SeeAlso: AH=12h/BH=05h
  7935. --------Q-1512--BH86-------------------------
  7936. INT 15 - DESQview v2.50+ - SEND MESSAGE 06h WITH ERROR RECOVERY
  7937.     AH = 12h
  7938.     BH = 86h
  7939. Note:    this function is identical to AH=12h/BH=06h, except that DESQview will
  7940.       not pop up a "Programming Error" window, instead returning an error
  7941.       code in AL (see #0344)
  7942. SeeAlso: AH=12h/BH=06h
  7943. --------Q-1512--BH87-------------------------
  7944. INT 15 - DESQview v2.50+ - SEND MESSAGE 07h WITH ERROR RECOVERY
  7945.     AH = 12h
  7946.     BH = 87h
  7947. Note:    this function is identical to AH=12h/BH=07h, except that DESQview will
  7948.       not pop up a "Programming Error" window, instead returning an error
  7949.       code in AL (see #0344)
  7950. SeeAlso: AH=12h/BH=07h
  7951. --------Q-1512--BH88-------------------------
  7952. INT 15 - DESQview v2.50+ - SEND MESSAGE 08h WITH ERROR RECOVERY
  7953.     AH = 12h
  7954.     BH = 88h
  7955. Note:    this function is identical to AH=12h/BH=08h, except that DESQview will
  7956.       not pop up a "Programming Error" window, instead returning an error
  7957.       code in AL (see #0344)
  7958. SeeAlso: AH=12h/BH=08h
  7959. --------Q-1512--BH89-------------------------
  7960. INT 15 - DESQview v2.50+ - SEND MESSAGE 09h WITH ERROR RECOVERY
  7961.     AH = 12h
  7962.     BH = 89h
  7963. Note:    this function is identical to AH=12h/BH=09h, except that DESQview will
  7964.       not pop up a "Programming Error" window, instead returning an error
  7965.       code in AL (see #0344)
  7966. SeeAlso: AH=12h/BH=09h
  7967. --------Q-1512--BH8A-------------------------
  7968. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Ah WITH ERROR RECOVERY
  7969.     AH = 12h
  7970.     BH = 8Ah
  7971. Note:    this function is identical to AH=12h/BH=0Ah, except that DESQview will
  7972.       not pop up a "Programming Error" window, instead returning an error
  7973.       code in AL (see #0344)
  7974. SeeAlso: AH=12h/BH=0Ah
  7975. --------Q-1512--BH8B-------------------------
  7976. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Bh WITH ERROR RECOVERY
  7977.     AH = 12h
  7978.     BH = 8Bh
  7979. Note:    this function is identical to AH=12h/BH=0Bh, except that DESQview will
  7980.       not pop up a "Programming Error" window, instead returning an error
  7981.       code in AL (see #0344)
  7982. SeeAlso: AH=12h/BH=0Bh
  7983. --------Q-1512--BH8C-------------------------
  7984. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Ch WITH ERROR RECOVERY
  7985.     AH = 12h
  7986.     BH = 8Ch
  7987. Note:    this function is identical to AH=12h/BH=0Ch, except that DESQview will
  7988.       not pop up a "Programming Error" window, instead returning an error
  7989.       code in AL (see #0344)
  7990. SeeAlso: AH=12h/BH=0Ch
  7991. --------Q-1512--BH8D-------------------------
  7992. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Dh WITH ERROR RECOVERY
  7993.     AH = 12h
  7994.     BH = 8Dh
  7995. Note:    this function is identical to AH=12h/BH=0Dh, except that DESQview will
  7996.       not pop up a "Programming Error" window, instead returning an error
  7997.       code in AL (see #0344)
  7998. SeeAlso: AH=12h/BH=0Dh
  7999. --------Q-1512--BH8E-------------------------
  8000. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Eh WITH ERROR RECOVERY
  8001.     AH = 12h
  8002.     BH = 8Eh
  8003. Note:    this function is identical to AH=12h/BH=0Eh, except that DESQview will
  8004.       not pop up a "Programming Error" window, instead returning an error
  8005.       code in AL (see #0344)
  8006. SeeAlso: AH=12h/BH=0Eh
  8007. --------Q-1512--BH8F-------------------------
  8008. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Fh WITH ERROR RECOVERY
  8009.     AH = 12h
  8010.     BH = 8Fh
  8011. Note:    this function is identical to AH=12h/BH=0Fh, except that DESQview will
  8012.       not pop up a "Programming Error" window, instead returning an error
  8013.       code in AL (see #0344)
  8014. SeeAlso: AH=12h/BH=0Fh
  8015. --------Q-1512--BH90-------------------------
  8016. INT 15 - DESQview v2.50+ - SEND MESSAGE 10h WITH ERROR RECOVERY
  8017.     AH = 12h
  8018.     BH = 90h
  8019. Note:    this function is identical to AH=12h/BH=10h, except that DESQview will
  8020.       not pop up a "Programming Error" window, instead returning an error
  8021.       code in AL (see #0344)
  8022. SeeAlso: AH=12h/BH=10h
  8023. --------Q-1512--BH91-------------------------
  8024. INT 15 - DESQview v2.50+ - SEND MESSAGE 11h WITH ERROR RECOVERY
  8025.     AH = 12h
  8026.     BH = 91h
  8027. Note:    this function is identical to AH=12h/BH=11h, except that DESQview will
  8028.       not pop up a "Programming Error" window, instead returning an error
  8029.       code in AL (see #0344)
  8030. SeeAlso: AH=12h/BH=11h,AH=12h/BX=1100h
  8031. --------Q-1512--BH92-------------------------
  8032. INT 15 - DESQview v2.50+ - SEND MESSAGE 12h WITH ERROR RECOVERY
  8033.     AH = 12h
  8034.     BH = 92h
  8035. Note:    this function is identical to AH=12h/BH=12h, except that DESQview will
  8036.       not pop up a "Programming Error" window, instead returning an error
  8037.       code in AL (see #0344)
  8038. SeeAlso: AH=12h/BH=12h,AH=12h/BX=1200h
  8039. --------Q-1512--BH93-------------------------
  8040. INT 15 - DESQview v2.50+ - SEND MESSAGE 13h WITH ERROR RECOVERY
  8041.     AH = 12h
  8042.     BH = 93h
  8043. Note:    this function is identical to AH=12h/BH=13h, except that DESQview will
  8044.       not pop up a "Programming Error" window, instead returning an error
  8045.       code in AL (see #0344)
  8046. SeeAlso: AH=12h/BH=13h
  8047. --------Q-1512--BH94-------------------------
  8048. INT 15 - DESQview v2.50+ - SEND MESSAGE 14h WITH ERROR RECOVERY
  8049.     AH = 12h
  8050.     BH = 94h
  8051. Note:    this function is identical to AH=12h/BH=14h, except that DESQview will
  8052.       not pop up a "Programming Error" window, instead returning an error
  8053.       code in AL (see #0344)
  8054. SeeAlso: AH=12h/BH=14h
  8055. --------Q-1512--BH95-------------------------
  8056. INT 15 - DESQview v2.50+ - SEND MESSAGE 15h WITH ERROR RECOVERY
  8057.     AH = 12h
  8058.     BH = 95h
  8059. Note:    this function is identical to AH=12h/BH=15h, except that DESQview will
  8060.       not pop up a "Programming Error" window, instead returning an error
  8061.       code in AL (see #0344)
  8062. SeeAlso: AH=12h/BH=15h
  8063. --------Q-1512--BH96-------------------------
  8064. INT 15 - DESQview v2.50+ - SEND MESSAGE 16h WITH ERROR RECOVERY
  8065.     AH = 12h
  8066.     BH = 96h
  8067. Note:    this function is identical to AH=12h/BH=16h, except that DESQview will
  8068.       not pop up a "Programming Error" window, instead returning an error
  8069.       code in AL (see #0344)
  8070. SeeAlso: AH=12h/BH=16h
  8071. --------T-1513-------------------------------
  8072. INT 15 - VMiX - "sys_wake" - WAKE SLEEPING PROCESS
  8073.     AH = 13h
  8074.     STACK:    WORD    process ID
  8075. Return: AX = status (SYS_OK or SYS_ERROR)
  8076. SeeAlso: AH=12h"VMiX"
  8077. --------T-1513-------------------------------
  8078. INT 15 - MultiDOS Plus - GET TASK CONTROL BLOCK
  8079.     AH = 13h
  8080. Return: BX:AX -> task control block (see #0345)
  8081. SeeAlso: AH=15h"MultiDOS"
  8082.  
  8083. Format of MultiDOS Plus v4.0 task control block:
  8084. Offset    Size    Description    (Table 0345)
  8085.  00h    DWORD    pointer to next TCB
  8086.  04h  8 BYTEs    ASCIZ task name
  8087.  0Ch  2 BYTEs    ???
  8088.  0Eh    WORD    task PSP segment
  8089.  10h    WORD    abort/suspend flags
  8090.  12h    WORD    current screen segment (see AH=0Bh,AH=0Ch)
  8091.  14h    WORD    priority level (0000h-FFFEh)
  8092.  16h    WORD    time slice counter
  8093.  18h  2 BYTEs    ???
  8094.  1Ah    WORD    suspend timer value
  8095.  1Ch    WORD    stack segment
  8096.  1Eh    WORD    stack pointer
  8097.  20h    WORD    display type
  8098.  22h    WORD    display memory
  8099.  24h  2 BYTEs    ???
  8100.  26h    WORD    termination count
  8101.  28h    WORD    equipment flag for BIO10 driver
  8102.  2Ah    BYTE    background CRT mode
  8103.  2Bh    WORD    screen width in columns
  8104.  2Dh    WORD    screen size in bytes
  8105.  2Fh    WORD    segment of physical screen memory
  8106.  31h 16 BYTEs    eight cursor positions
  8107.  41h    WORD    current cursor shape
  8108.  43h    BYTE    active display page
  8109.  44h    WORD    CRT controller I/O port base
  8110.  46h  2 BYTEs    ???
  8111.  48h    WORD    foreground task flag
  8112.  4Ah  6 BYTEs    ???
  8113.  50h    WORD    saved video segment (see AH=0Bh,AH=0Ch)
  8114.  52h    DWORD    old INT 22
  8115.  56h    DWORD    old INT 23
  8116.  5Ah    DWORD    old INT 24
  8117.  5Eh    WORD    top of memory for task
  8118.  60h  4 BYTEs    ???
  8119.  64h    WORD    DTA segment (see INT 21/AH=1Ah)
  8120.  66h    WORD    DTA offset
  8121.  68h  4 BYTEs    ???
  8122.  6Ch    BYTE    current ANSI.SYS attribute
  8123.  6Dh    BYTE    current ANSI.SYS column
  8124.  6Eh    BYTE    current ANSI.SYS row
  8125.  6Fh    BYTE    current ANSI.SYS display state
  8126.  70h    BYTE    maximum ANSI.SYS columns
  8127.  71h    BYTE    current ANSI.SYS page
  8128.  72h    WORD    saved ANSI.SYS cursor position
  8129.  74h    BYTE    ANSI.SYS parameter buffer index
  8130.  75h    BYTE    current ANSI.SYS screen mode
  8131.  76h    BYTE    ANSI.SYS wrap flag
  8132.  77h  6 BYTEs    ANSI.SYS parameter buffer
  8133.  7Dh    BYTE    ANSI.SYS keyboard DSR state
  8134.  7Eh  7 BYTEs    ANSI.SYS keyboard DSR buffer
  8135.  85h  3 BYTEs    ???
  8136.  88h 16 BYTEs    request header for DOS driver calls
  8137.  98h 14 BYTEs    ???
  8138.  A6h    WORD    segment of EMS map if EMS task
  8139.  A8h    WORD    flag: task makes EMS calls
  8140.  AAh    WORD    EMS handle for task
  8141.  ACh    WORD    keyboard shift state
  8142.  AEh 12 BYTEs    ???
  8143.  BAh    WORD    TCB of parent if child task
  8144.  BCh    WORD    termination code
  8145.  BEh    WORD    COM port number
  8146.  C0h  4 BYTEs    ???
  8147.  C4h    WORD    current IRQ number
  8148.  C6h  2 BYTEs    ???
  8149.  C8h    WORD    miscellaneous flag word
  8150.  CAh  2 BYTEs    ???
  8151.  CCh    DWORD    old INT 10
  8152.  D0h    WORD    EMS alternate map set number
  8153.  D2h 414 BYTEs    DOS current disk and directory context (optional)
  8154. --------T-1514-------------------------------
  8155. INT 15 - VMiX - "sys_clrwindow" - CLEAR WINDOW
  8156.     AH = 14h
  8157.     STACK:    WORD    top left corner of window (high byte = row, low = col)
  8158.         WORD    bottom right corner of window (high = row, low = col)
  8159. Return: AX = status (SYS_OK)
  8160. Note:    clears window to color set with "sys_setcolors" (AH=18h)
  8161. SeeAlso: AH=15h"VMiX",AH=16h"VMiX",AH=18h"VMiX",AH=1Fh"VMiX"
  8162. --------T-1514-------------------------------
  8163. INT 15 - MultiDOS Plus - CHECK IF MultiDOS FOREGROUND OR BACKGROUND
  8164.     AH = 14h
  8165. Return: AX = current state
  8166.         0000h MultiDOS Plus command prompt is background task
  8167.         0001h command prompt is foreground task
  8168. SeeAlso: AH=0Bh"MultiDOS"
  8169. --------T-1515-------------------------------
  8170. INT 15 - VMiX - "sys_setbwindow" - SET BANNER WINDOW MESSAGE
  8171.     AH = 15h
  8172.     STACK:    DWORD    pointer to ASCIZ banner message for top of screen
  8173. Return: AX = status (SYS_OK)
  8174. SeeAlso: AH=14h"VMiX",AH=16h"VMiX"
  8175. --------T-1515-------------------------------
  8176. INT 15 - MultiDOS Plus - GET SYSTEM BLOCK
  8177.     AH = 15h
  8178. Return: BX:AX -> system block (see #0346)
  8179. SeeAlso: AH=13h"MultiDOS"
  8180.  
  8181. Format of MultiDOS Plus 4.0 system block:
  8182. Offset    Size    Description    (Table 0346)
  8183.  00h    WORD    segment of system control block
  8184.  02h    WORD    redirection flag set by /NOREDIRECT
  8185.  04h    WORD    no-INT 10 flag set by /NO10
  8186.  06h    DWORD    old INT 10
  8187.  0Ah    DWORD    new INT 10
  8188.  0Eh    DWORD    pointer to WORD with current TCB offset (see #0345)
  8189.  12h    DWORD    pointer to WORD with idle task TCB offset
  8190.  16h    DWORD    pointer to WORD with foreground TCB offset (see #0345)
  8191.  1Ah    DWORD    pointer to WORD with MultiDOS TCB offset (see #0345)
  8192.  1Eh    WORD    Task Control Block size
  8193.  20h    WORD    number of TCBs
  8194.  22h    WORD    flag: EMS present
  8195.  24h    WORD    EMS page frame base segment
  8196.  26h    WORD    16K pages in EMS page frame
  8197.  28h    WORD    base segment for conventional memory tasks
  8198.  2Ah    WORD    conventional memory size in paragraphs
  8199.  2Ch    DWORD    pointer to list of queue pointers
  8200. --------T-1516-------------------------------
  8201. INT 15 - VMiX - "sys_setwindow" - SET ROOT WINDOW SIZE AND HOME CURSOR
  8202.     AH = 16h
  8203.     STACK:    DWORD    pointer to I/O Request Packet
  8204.         WORD    top left corner of window (high byte = row, low = col)
  8205.         WORD    bottom right corner of window (high = row, low = col)
  8206. Return: AX = status (SYS_OK or SYS_ERROR)
  8207. SeeAlso: AH=14h"VMiX",AH=17h"VMiX"
  8208. --------T-1516-------------------------------
  8209. INT 15 - MultiDOS Plus - INITIALIZATION
  8210.     AH = 16h
  8211. Note:    used internally during initialization; any other calls will cause
  8212.       unpredictable results
  8213. --------T-1517-------------------------------
  8214. INT 15 - VMiX - "sys_getcolors" - GET CONSOLE WINDOW COLORS
  8215.     AH = 17h
  8216. Return: AH = foreground color
  8217.     AL = background color
  8218. SeeAlso: AH=16h"VMiX",AH=18h"VMiX"
  8219. --------T-1517-------------------------------
  8220. INT 15 - MultiDOS Plus - MAP IRQ
  8221.     AH = 17h
  8222.     AL = IRQ to map (01h-0Fh)
  8223.     BX = offset of task control block (see #0345) to associate with IRQ
  8224. Return: AX = status
  8225.         0000h successful
  8226.         other invalid IRQ
  8227. Note:    the EMS map of the specified TCB is associated with the given interrupt
  8228. SeeAlso: AH=18h"MultiDOS",AH=19h"MultiDOS"
  8229. --------T-1518-------------------------------
  8230. INT 15 - VMiX - "sys_setcolors" - SET CONSOLE COLORS
  8231.     AH = 18h
  8232.     STACK:    WORD    new background/foreground colors
  8233.             bits 3-0: foreground
  8234.             bits 7-4: background
  8235.             bits 15-8: unused
  8236. Return: AX = color
  8237. SeeAlso: AH=14h"VMiX",AH=17h"VMiX",AH=19h"VMiX"
  8238. --------T-1518-------------------------------
  8239. INT 15 - MultiDOS Plus - UNMAP IRQ
  8240.     AH = 18h
  8241.     AL = IRQ to unmap (01h-0Fh)
  8242. Return: AX = status
  8243.         0000h successful
  8244.         0001h invalid IRQ
  8245. Note:    results are unpredictable if the IRQ has not been mapped
  8246. SeeAlso: AH=17h"MultiDOS",AH=19h"MultiDOS"
  8247. --------T-1519-------------------------------
  8248. INT 15 - VMiX v2+ - "sys_setconwn" - SET WINDOW COLORS
  8249.     AH = 19h
  8250.     STACK:    WORD    new background/foreground colors
  8251.             bits 3-0: foreground
  8252.             bits 7-4: background
  8253.             bits 15-8: unused
  8254. Return: AX = color
  8255. SeeAlso: AH=18h"VMiX"
  8256. --------T-1519-------------------------------
  8257. INT 15 - MultiDOS Plus - UNMAP ALL IRQs
  8258.     AH = 19h
  8259. Return: AX destroyed
  8260. Note:    for MultiDOS internal use only
  8261. SeeAlso: AH=17h"MultiDOS",AH=18h"MultiDOS"
  8262. --------T-151A-------------------------------
  8263. INT 15 - VMiX v2+ - "sys_sint" - INVOKE SOFTWARE INTERRUPT
  8264.     AH = 1Ah
  8265.     STACK:    WORD    interrupt number
  8266.         DWORD    pointer to register structure
  8267. Return: AX = returned flags
  8268. --------T-151A-------------------------------
  8269. INT 15 - MultiDOS Plus - MAP SEMAPHORE NAME TO NUMBER
  8270.     AH = 1Ah
  8271.     DS:SI -> 8-byte name
  8272. Return: AL = status
  8273.         00h successful
  8274.         AH = semaphore number (20h-3Fh)
  8275.         04h out of string space
  8276. Notes:    all eight bytes of the name are significant
  8277.     if the name does not already exist, it is added to the name table and
  8278.       associated with a free semaphore number
  8279.     names cannot be destroyed
  8280. SeeAlso: AH=1Bh"MultiDOS",AH=1Ch"MultiDOS",AH=1Dh"MultiDOS"
  8281. --------T-151B-------------------------------
  8282. INT 15 - VMiX v2+ - "sys_blkmov" - MOVE MEMORY BLOCK
  8283.     AH = 1Bh
  8284.     STACK:    DWORD    source address
  8285.         DWORD    destination address
  8286.         WORD    number of words to move
  8287. Return: nothing
  8288. --------T-151B-------------------------------
  8289. INT 15 - MultiDOS Plus - REQUEST RESOURCE SEMAPHORE BY NAME
  8290.     AH = 1Bh
  8291.     DS:SI -> 8-byte name
  8292. Return: AH = status
  8293.         00h successful
  8294.         02h invalid semaphore number
  8295.         03h caller already owns semaphore
  8296.         04h out of string space
  8297. Notes:    (see AH=01h"MultiDOS")
  8298.     equivalent to AH=1Ah followed by AH=01h
  8299. SeeAlso: AH=01h"MultiDOS",AH=1Ah"MultiDOS",AH=1Ch"MultiDOS",AH=1Dh"MultiDOS"
  8300. --------T-151C-------------------------------
  8301. INT 15 - VMiX v2+ - "sys_bitblt" - PUT GRAPHICAL OBJECT AT CURSOR POSITION
  8302.     AH = 1Ch
  8303.     STACK:    WORD    AND/OR pixel with background (00h = OR, 01h = AND)
  8304.         DWORD    pointer to object bitmap
  8305.         WORD    object width in pixels
  8306.         WORD    object height in pixels
  8307. Return: nothing
  8308. SeeAlso: AH=1Dh"VMiX"
  8309. --------T-151C-------------------------------
  8310. INT 15 - MultiDOS Plus - RELEASE RESOURCE SEMAPHORE BY NAME
  8311.     AH = 1Ch
  8312.     DS:SI -> 8-byte name
  8313. Return: AH = status
  8314.         00h successful
  8315.         01h not semaphore owner
  8316.         02h invalid semaphore number
  8317.         04h out of string space
  8318. Notes:    (see AH=02h"MultiDOS")
  8319.     equivalent to AH=1Ah followed by AH=02h
  8320. SeeAlso: AH=02h"MultiDOS",AH=1Ah"MultiDOS",AH=1Bh"MultiDOS",AH=1Dh"MultiDOS"
  8321. --------T-151D-------------------------------
  8322. INT 15 - VMiX v2+ - "sys_getfont" - GET CURRENT CONSOLE GRAPHICS FONT
  8323.     AH = 1Dh
  8324. Return: AX = current font number (00h-03h)
  8325. SeeAlso: AH=1Ch"VMiX",AH=1Eh"VMiX"
  8326. --------T-151D-------------------------------
  8327. INT 15 - MultiDOS Plus - TEST RESOURCE SEMAPHORE BY NAME
  8328.     AH = 1Dh
  8329.     DS:SI -> 8-byte name
  8330. Return: AH = status
  8331.         00h semaphore not in use
  8332.         01h semaphore owned by another task
  8333.         02h invalid semaphore number
  8334.         03h caller owns semaphore
  8335.         04h out of string space
  8336. Notes:    (see AH=10h"MultiDOS")
  8337.     equivalent to AH=1Ah followed by AH=10h
  8338. SeeAlso: AH=10h"MultiDOS",AH=1Ah"MultiDOS",AH=1Bh"MultiDOS",AH=1Ch"MultiDOS"
  8339. --------T-151E-------------------------------
  8340. INT 15 - VMiX v2+ - "sys_setfont" - SET CONSOLE GRAPHICS FONT
  8341.     AH = 1Eh
  8342.     STACK: WORD new font number (00h-03h)
  8343. Return: AX = current font number (00h-03h)
  8344. SeeAlso: AH=1Dh"VMiX"
  8345. --------T-151E00-----------------------------
  8346. INT 15 - MultiDOS Plus - CLEAR EVENT COUNTER
  8347.     AX = 1E00h
  8348.     DX = event/trigger number (00h-3Fh)
  8349. Return: AH = status
  8350.         00h successful
  8351. SeeAlso: AX=1E01h,AX=1E02h
  8352. --------T-151E01-----------------------------
  8353. INT 15 - MultiDOS Plus - TRIGGER EVENT
  8354.     AX = 1E01h
  8355.     DX = event/trigger number (00h-3Fh)
  8356. Return: AH = status
  8357.         00h successful
  8358.         01h invalid event/trigger number
  8359. Notes:    schedules any task waiting for event; if no task is waiting, the event
  8360.       counter is incremented (and will roll over if it was 65535)
  8361.     may be invoked by interrupt handler
  8362. SeeAlso: AX=1E00h,AX=1E02h
  8363. --------T-151E02-----------------------------
  8364. INT 15 - MultiDOS Plus - WAIT FOR EVENT
  8365.     AX = 1E02h
  8366.     DX = event/trigger number (00h-3Fh)
  8367. Return: AH = status
  8368.         00h successful
  8369.         01h invalid event/trigger number
  8370. Note:    if the event counter is zero, the task is suspended until the event is
  8371.       triggered with AX=1E01h; else, the counter is decremented and the
  8372.       call returns immediately
  8373. SeeAlso: AX=1E00h,AX=1E01h
  8374. --------T-151E08-----------------------------
  8375. INT 15 - MultiDOS Plus 4.01 - SET CONTEXT-SWITCH FUNCTIONS
  8376.     AX = 1E08h
  8377.     DX:BX -> context save handler (see #0347)
  8378.     DX:CX -> context restore handler (see #0347)
  8379. Note:    handlers may be removed by setting addresses to 0000h:0000h
  8380.  
  8381. (Table 0347)
  8382. Values MultiDOS Plus context-switch handlers are called with:
  8383.     ES:BX -> task's TCB
  8384. Return: all registers preserved
  8385. --------T-151F-------------------------------
  8386. INT 15 - VMiX v2.???+ - "sys_scrollwin" - SCROLL WINDOW
  8387.     AH = 1Fh
  8388.     STACK:    WORD    top left corner of window (high byte = row, low = col)
  8389.         WORD    bottom right corner of window
  8390. Return: AX = status (SYS_OK)
  8391. SeeAlso: AH=14h"VMiX",AH=18h"VMiX"
  8392. --------T-151F-------------------------------
  8393. INT 15 - MultiDOS Plus v4.01 - GET MEMORY PARAMETERS
  8394.     AH = 1Fh
  8395. Return: BX = first segment of conventional memory
  8396.     DX = first segment of EMS swap frame into which MultiDOS will load
  8397.         programs
  8398. --------T-1520-------------------------------
  8399. INT 15 - MultiDOS Plus v4.01 - CHECK IF MULTITASKING ENABLED
  8400.     AH = 20h
  8401. Return: AX = current state
  8402.         0000h multitasking enabled
  8403.         other TCB of task that disabled multitasking
  8404. SeeAlso: AH=0Dh"MultiDOS",AH=13h"MultiDOS"
  8405. --------c-152000-----------------------------
  8406. INT 15 U - DOS 3+ PRINT.COM - DISABLE CRITICAL REGION FLAG
  8407.     AX = 2000h
  8408. Desc:    stop setting user flag on entry to PRINT critical region
  8409. Note:    also supported by PC Network v1.00 RECEIVER.COM
  8410. SeeAlso: AX=2001h
  8411. --------c-152001-----------------------------
  8412. INT 15 U - DOS 3+ PRINT.COM - SET CRITICAL REGION FLAG
  8413.     AX = 2001h
  8414.     ES:BX -> byte which is to be incremented while in a DOS call
  8415. Desc:    specify a user flag which PRINT should set to let an interested
  8416.       application know it is in a critical region
  8417. Note:    also supported by PC Network v1.00 RECEIVER.COM
  8418. SeeAlso: AX=2000h
  8419. --------O-152010-----------------------------
  8420. INT 15 - OS HOOK - SETUP SYSREQ ROUTINE (AT,XT286,PS50+)
  8421.     AX = 2010h
  8422.     ???
  8423. Return: ???
  8424. SeeAlso: AX=2011h
  8425. --------O-152011-----------------------------
  8426. INT 15 - OS HOOK - COMPLETION OF SYSREQ FUNCTION (AT,XT286,PS50+)
  8427.     AX = 2011h
  8428.     ???
  8429. Return: ???
  8430. SeeAlso: AX=2010h
  8431. --------B-1521-------------------------------
  8432. INT 15 - SYSTEM - POWER-ON SELF-TEST ERROR LOG (PS50+)
  8433.     AH = 21h
  8434.     AL = subfunction
  8435.         00h read POST log
  8436.         01h write POST log
  8437.         BH = device ID
  8438.         BL = error code
  8439. Return: CF set on error
  8440.     AH = status (00h OK, 01h list full, 80h invalid cmd, 86h unsupported)
  8441.     if function 00h:
  8442.        BX = number of error codes stored
  8443.        ES:DI -> error log
  8444. Notes:    the log is a series of words, the first byte of which identifies the
  8445.       error code and the second the device.
  8446.     supported by AMI PCI BIOS
  8447. --------B-1522-------------------------------
  8448. INT 15 - SYSTEM - later PS/2s - LOCATE ROM BASIC
  8449.     AH = 22h
  8450. Return: CF set on error
  8451.         AH = status (86h if function not supported)
  8452.     CF clear on success
  8453.         AH = 00h
  8454.         ES:BX -> ROM BASIC
  8455. Note:    if this function is not supported, ROM BASIC is at F600h:0000h
  8456. SeeAlso: INT 86"BASIC",INT F0"BASIC"
  8457. --------B-152300-----------------------------
  8458. INT 15 U - SYSTEM - PS/1s - GET ??? CMOS DATA
  8459.     AX = 2300h
  8460. Return: CF clear if successful
  8461.         CL = value of CMOS location 2Dh
  8462.         CH = value of CMOS location 2Eh
  8463.     CF set on error
  8464.         AH = error code (80h,86h)
  8465. SeeAlso: AX=2301h,AX=2304h,AX=2305h
  8466. --------B-152301-----------------------------
  8467. INT 15 U - SYSTEM - PS/1s - SET ??? CMOS DATA
  8468.     AX = 2301h
  8469.     CL = new value for CMOS location 2Dh
  8470.     CH = new value for CMOS location 2Eh
  8471. Return: CF clear if successful
  8472.     CF set on error
  8473.         AH = error code (80h,86h)
  8474. Note:    sets the contents of CMOS locations 2Dh and 2Eh
  8475. SeeAlso: AX=2300h,AX=2304h,AX=2305h
  8476. --------B-152304-----------------------------
  8477. INT 15 U - SYSTEM - PS/1s - SYSTEM SETUP
  8478.     AX = 2304h
  8479.     DX = segment of 32K buffer
  8480. Return: CF clear if successful
  8481.         AX = 0003h (left over from setting video mode 3)
  8482.         BX,CX,DX,BP,DS,ES destroyed
  8483.     CF set on error
  8484.         AH = error code (80h,86h)
  8485. SeeAlso: AX=2301h,AX=2305h
  8486. ----------152305-----------------------------
  8487. INT 15 U - SYSTEM - PS/1s - GET PROCESSOR SPEED
  8488.     AX = 2305h
  8489. Return: CF clear if successful
  8490.         AL = processor speed in MHz
  8491.     CF set on error
  8492.         AL = FFh (speed > 80 MHz)
  8493.         AL = error code (80h,86h = unsupported function)
  8494. SeeAlso: AX=2301h,AX=2304h,AH=BCh
  8495. --------b-152400-----------------------------
  8496. INT 15 - SYSTEM - later PS/2s - DISABLE A20 GATE
  8497.     AX = 2400h
  8498. Return: CF clear if successful
  8499.         AH = 00h
  8500.     CF set on error
  8501.         AH = status
  8502.         01h keyboard controller is in secure mode
  8503.         86h function not supported
  8504. Note:    also supported by Qualitas 386MAX v6.01+
  8505. SeeAlso: AX=2401h,AX=2402h,AX=2403h
  8506. --------b-152401-----------------------------
  8507. INT 15 - SYSTEM - later PS/2s - ENABLE A20 GATE
  8508.     AX = 2401h
  8509. Return: CF clear if successful
  8510.         AH = 00h
  8511.     CF set on error
  8512.         AH = status
  8513.         01h keyboard controller is in secure mode
  8514.         86h function not supported
  8515. Note:    also supported by Qualitas 386MAX v6.01+
  8516. SeeAlso: AX=2400h,AX=2402h
  8517. --------b-152402-----------------------------
  8518. INT 15 - SYSTEM - later PS/2s - GET A20 GATE STATUS
  8519.     AX = 2402h
  8520. Return: CF clear if successful
  8521.         AH = 00h
  8522.         AL = current state (00h disabled, 01h enabled)
  8523.     CF set on error
  8524.         AH = status
  8525.         01h keyboard controller is in secure mode
  8526.         86h function not supported
  8527. Note:    also supported by Qualitas 386MAX v6.01+
  8528. SeeAlso: AX=2400h,AX=2401h
  8529. --------b-152403-----------------------------
  8530. INT 15 - SYSTEM - later PS/2s - QUERY A20 GATE SUPPORT
  8531.     AX = 2403h
  8532. Return: CF clear if successful
  8533.         AH = 00h
  8534.         BX = status of A20 gate support (see #0348)
  8535.     CF set on error
  8536.         AH = status
  8537.         01h keyboard controller is in secure mode
  8538.         86h function not supported
  8539. Note:    also supported by AMI PCI BIOS and Qualitas 386MAX v6.01+
  8540. BUG:    at one point early in processing INT 15/AH=24h, the AMI PCI BIOS
  8541.       version 1.00.05.AX1 compares whether AL==03h instead of AL>=03h,
  8542.       thus causing a random branch on any value of AL greater than 3.
  8543. SeeAlso: AX=2402h
  8544.  
  8545. Bitfields for A20 gate support status:
  8546. Bit(s)    Description    (Table 0348)
  8547.  0    supported on keyboard controller
  8548.  1    supported with bit 1 of I/O port 92h
  8549.  15    additional data is available (location not yet defined)
  8550. ----------153000-----------------------------
  8551. INT 15 - Object Kernel for DOS - INSTALLATION CHECK
  8552.     AX = 3000h
  8553. Return: AX:BX = 4F42h:4A21h ('OBJ!') if installed
  8554.         CX = resident segment
  8555. Program: the Object Kernel is a program by M.W. Pieters which is currently
  8556.       under development
  8557. SeeAlso: AX=3001h,AX=3008h
  8558. ----------153001-----------------------------
  8559. INT 15 - Object Kernel for DOS - GET STATUS BLOCK
  8560.     AX = 3001h
  8561. Return: AX = FFFFh
  8562.     ES:DI -> status block
  8563. SeeAlso: AX=3000h,AX=3008h
  8564. ----------153002-----------------------------
  8565. INT 15 - Object Kernel for DOS - KILL PROCESS
  8566.     AX = 3002h
  8567.     (not yet implemented)
  8568. SeeAlso: AX=3000h
  8569. ----------153003-----------------------------
  8570. INT 15 - Object Kernel for DOS - STOP PROCESS
  8571.     AX = 3003h
  8572.     (not yet implemented)
  8573. SeeAlso: AX=3000h
  8574. ----------153004-----------------------------
  8575. INT 15 - Object Kernel for DOS - START PROCESS
  8576.     AX = 3004h
  8577.     (not yet implemented)
  8578. SeeAlso: AX=3000h
  8579. ----------153005-----------------------------
  8580. INT 15 - Object Kernel for DOS - RESTART PROCESS
  8581.     AX = 3005h
  8582.     (not yet implemented)
  8583. SeeAlso: AX=3000h
  8584. ----------153006-----------------------------
  8585. INT 15 - Object Kernel for DOS - EXECUTE PROCESS
  8586.     AX = 3006h
  8587.     (not yet implemented)
  8588. SeeAlso: AX=3000h
  8589. ----------153007-----------------------------
  8590. INT 15 - Object Kernel for DOS - LIST PROCESSES
  8591.     AX = 3007h
  8592.     (not yet implemented)
  8593. SeeAlso: AX=3000h
  8594. ----------153008-----------------------------
  8595. INT 15 - Object Kernel for DOS - SWITCH ObjectKernel ON/OFF
  8596.     AX = 3008h
  8597.     BH = new state (00h disabled, 01h enabled)
  8598. Return: AX = FFFFh
  8599. SeeAlso: AX=3000h,AX=3009h
  8600. ----------153009-----------------------------
  8601. INT 15 - Object Kernel for DOS - RESERVED FOR FUTURE USE
  8602.     AX = 3009h to 30FFh
  8603. SeeAlso: AX=3000h
  8604. Program: the Object Kernel is a program by M.W. Pieters which is currently
  8605.       under development
  8606. --------B-1540-------------------------------
  8607. INT 15 - SYSTEM - READ/MODIFY PROFILES (CONVERTIBLE)
  8608.     AH = 40h
  8609.     AL = subfunction
  8610.         00h get system profile in CX and BX
  8611.         01h set system profile from CX and BX
  8612.         02h get internal modem profile in BX
  8613.         03h set internal modem profile from BX
  8614. Return: CF clear if successful
  8615.         AH = 00h
  8616.     CF set on error
  8617.         AH = status (80h = profile execution failed)
  8618. --------V-154000-----------------------------
  8619. INT 15 - Compaq SLT/286 or Portable 386 - READ LCD/PLASMA TIMEOUT
  8620.     AX = 4000h
  8621. Return: AX = 4000h
  8622.     CL = timeout in minutes, 00h if disabled
  8623. SeeAlso: AX=4001h,AX=4600h
  8624. --------V-154001-----------------------------
  8625. INT 15 - Compaq SLT/286 or Portable 386 - SET LCD/PLASMA TIMEOUT
  8626.     AX = 4001h
  8627.     CL = timeout in minutes, 00h to disable
  8628. Return: AL = status
  8629.         00h timeout modified
  8630.         01h timeout cannot be modified
  8631.         40h timeout cannot be modified
  8632.     CL = timeout in minutes, 00h if disabled
  8633. SeeAlso: AX=4000h,AX=4601h
  8634. --------B-1541-------------------------------
  8635. INT 15 - SYSTEM - WAIT ON EXTERNAL EVENT (CONVERTIBLE and some others)
  8636.     AH = 41h
  8637.     AL = condition type (see #0349)
  8638.     BH = condition compare or mask value
  8639.     BL = timeout value times 55 milliseconds
  8640.         00h means no timeout
  8641.     DX = I/O port address if AL bit 4 set
  8642.     ES:DI -> user byte if AL bit 4 clear
  8643. Note:    call AH=C0h and examine bit 3 of feature byte 1 to determine whether
  8644.       this function is supported
  8645. SeeAlso: AH=83h,AH=86h,AH=C0h
  8646.  
  8647. Bitfields for external event wait condition type:
  8648. Bit(s)    Description    (Table 0349)
  8649.  0-2    condition to wait for
  8650.     0 any external event
  8651.     1 compare and return if equal
  8652.     2 compare and return if not equal
  8653.     3 test and return if not zero
  8654.     4 test and return if zero
  8655.  3    reserved
  8656.  4    1=port address, 0=user byte
  8657.  5-7    reserved
  8658. --------B-1542-------------------------------
  8659. INT 15 - SYSTEM - REQUEST POWER OFF (CONVERTIBLE,HP 95LX)
  8660.     AH = 42h
  8661.     AL = suspend type
  8662.         00h to use system profile
  8663.         01h to force suspend regardless of system profile
  8664. Note:    the HP 95LX apparently suspends regardless of the value in AL; on
  8665.       power-up, execution will resume following the instruction calling
  8666.       this function
  8667. SeeAlso: AH=44h
  8668. --------b-154280-----------------------------
  8669. INT 15 - Compaq SLT/286 - ENTER STANDBY
  8670.     AX = 4280h
  8671. Return: AH = 42h
  8672.     CF clear if successful
  8673.     CF set if unable to enter standby
  8674. SeeAlso: AX=4600h,AX=5307h/BX=0001h/CX=0001h
  8675. --------B-1543-------------------------------
  8676. INT 15 - SYSTEM - READ SYSTEM STATUS (CONVERTIBLE)
  8677.     AH = 43h
  8678. Return: AL = status bits (see #0350)
  8679.  
  8680. Bitfields for Convertible system status:
  8681. Bit(s)    Description    (Table 0350)
  8682.  7    power low
  8683.  6    external power in use
  8684.  5    standby power lost
  8685.  4    power activated by alarm
  8686.  3    internal modem powered on
  8687.  2    RS232/parallel adapter powered on
  8688.  1    reserved
  8689.  0    LCD detached
  8690. --------B-1544-------------------------------
  8691. INT 15 - SYSTEM - (DE)ACTIVATE INTERNAL MODEM POWER (CONVERTIBLE)
  8692.     AH = 44h
  8693.     AL = new modem power state (00h power off, 01h power on)
  8694. SeeAlso: AH=42h
  8695. --------b-1544C0-----------------------------
  8696. INT 15 - Olivetti Quaderno - INITIALIZE DIGITAL SIGNAL PROCESSING???
  8697.     AX = 44C0h
  8698.     ES:DI -> new DSP procedure (exchanged with CMOS[28h])
  8699.     ES:SI -> ??? buffer
  8700. Return: ES:DI -> old DSP procedure
  8701.     ES:SI buffer filled with ten bytes from CMOS (addresses 14h-1Ch)
  8702.       followed by 00h (addresses 15h-1Ch copied only if less than 21h)
  8703. Note:    this function is also supported by XBIOS.COM
  8704. SeeAlso: AX=44C9h
  8705. --------b-1544C1-----------------------------
  8706. INT 15 - Olivetti Quaderno - ???
  8707.     AX = 44C1h
  8708.     ???
  8709. Return: ???
  8710. Note:    this function is also supported by XBIOS.COM
  8711. SeeAlso: AX=44C9h
  8712. --------b-1544C2-----------------------------
  8713. INT 15 - Olivetti Quaderno - ???
  8714.     AX = 44C2h
  8715.     DL = byte to be written to I/O port 350h
  8716. Note:    this function is also supported by XBIOS.COM
  8717. SeeAlso: AX=44C3h,AX=44C9h
  8718. --------b-1544C3-----------------------------
  8719. INT 15 - Olivetti Quaderno - GET ???
  8720.     AX = 44C3h
  8721. Return: DH = bitfields (see #0351)
  8722.     DL = value read from I/O port 350h
  8723. Note:    this function is also supported by XBIOS.COM
  8724. SeeAlso: AX=44C2h,AX=44C9h
  8725.  
  8726. Bitfields for Olivetti Quaderno ???:
  8727. Bit(s)    Description    (Table 0351)
  8728.  5-7    5-7 read from I/O port 351h
  8729.  2-4    zero
  8730.  1-0    "tres complique"
  8731. --------b-1544C4-----------------------------
  8732. INT 15 - Olivetti Quaderno - ???
  8733.     AX = 44C4h and 44C5h
  8734.     ???
  8735. Return: ???
  8736. Note:    this function is also supported by XBIOS.COM
  8737. SeeAlso: AX=44C9h
  8738. --------b-1544C6-----------------------------
  8739. INT 15 - Olivetti Quaderno - READ LCD
  8740.     AX = 44C6h
  8741. Return: DX = FFFFh clock is displayed on LCD display
  8742.     DX = other: hex number displayed in first four positions of display
  8743.     BH = left alphanumeric character on display (see #0352)
  8744.     BL = right alphanumeric character on display (see #0352)
  8745.     CL = colon flags (see #0353)
  8746. Notes:    the LCD display has the format HH:HH:AA, where H is a hex digit and A
  8747.       is an alphanumeric character
  8748.     this function is also supported by XBIOS.COM
  8749. SeeAlso: AX=44C7h,AX=44C9h
  8750.  
  8751. (Table 0352)
  8752. Values for Olivetti Quaderno LCD alphanumeric characters:
  8753.  00h-0Fh hex digit
  8754.  2Bh    "+"
  8755.  2Dh    "-"
  8756.  30h-39h "0" to "9"
  8757.  41h-5Ah "A" to "Z"
  8758.  61h-6Ah "a" to "z"
  8759.  else    blank
  8760.  
  8761. Bitfields for Olivetti Quaderno LCD colon flags:
  8762. Bit(s)    Description    (Table 0353)
  8763.  0    left colon on
  8764.  1    right colon on
  8765.  2-7    unused    
  8766. --------b-1544C7-----------------------------
  8767. INT 15 - Olivetti Quaderno - WRITE LCD
  8768.     AX = 44C7h
  8769.     DX = hex display
  8770.         FFFFh display clock and "HI", "Md", or "Lo"
  8771.         BH,BL,CL unused
  8772.         other: display specified hex number in first four positions
  8773.         BH = left alphanumeric character on display (see #0352)
  8774.         BL = right alphanumeric character on display (see #0352)
  8775.         CL = colon flags (see #0353)
  8776. Note:    this function is also supported by XBIOS.COM
  8777. SeeAlso: AX=44C6h
  8778. --------b-1544C8-----------------------------
  8779. INT 15 - Olivetti Quaderno - ???
  8780.     AX = 44C8h
  8781.     CL = ??? (00h,02h,21h)
  8782.     CH = ???
  8783.     ???
  8784. Return: ???
  8785. Note:    this function is also supported by XBIOS.COM
  8786. SeeAlso: AX=44C9h
  8787. --------b-1544C9-----------------------------
  8788. INT 15 - Olivetti Quaderno - GET XBIOS VERSION
  8789.     AX = 44C9h
  8790. Return: AL = major version
  8791.     AH = minor version
  8792. Note:    this function is also supported by XBIOS.COM
  8793. --------b-1546-------------------------------
  8794. INT 15 U - HP 100LX/200LX - SET POWER OFF TIMEOUT
  8795.     AH = 46h
  8796.     BX = timeout value in ticks
  8797.         0000h inhibit auto power off
  8798. Note:    the 200LX default timeout is 0CCDh = 3277 ticks = approx. 3 min.
  8799. --------b-154600-----------------------------
  8800. INT 15 - Compaq SLT/286 - READ POWER CONSERVATION/MODEM CONFIGURATION
  8801.     AX = 4600h
  8802. Return: AH = modem configuration information (see #0354)
  8803.     AL = power conservation status information (see #0355)
  8804.     BH = default system inactivity timeout (1-21 minutes)
  8805.     BL = current system inactivity timeout (1-21 minutes)
  8806.     CH = default video display inactivity timeout (1-63 minutes)
  8807.     CL = current video display inactivity timeout (1-63 minutes)
  8808.     DH = default fixed disk drive inactivity timeout (1-21 minutes)
  8809.     DL = current fixed disk drive inactivity timeout (1-21 minutes)
  8810. SeeAlso: AX=4280h,AX=4601h,INT 77
  8811.  
  8812. Bitfields for Compaq SLT/286 modem configuration information:
  8813. Bit(s)    Description    (Table 0354)
  8814.  0    powerup state (0 off, 1 on)
  8815.  1    modem installed
  8816.  2    IRQ line assignment (0 IRQ 4, 1 IRQ 3)
  8817.  3    COM port assignment (0 = COM 2, 1 = COM 1)
  8818.  4    modem state (0 not assigned, 1 assigned)
  8819.  5    modem is on
  8820.  
  8821. Bitfields for Compaq SLT/286 power conservation status:
  8822. Bit(s)    Description    (Table 0355)
  8823.  0    power source (0 internal, 1 external)
  8824.  1-2    low battery state
  8825.     00 no low battery condition
  8826.     01 low battery 1
  8827.     10 reserved
  8828.     11 low battery 2
  8829.  3-4    power conservation mode
  8830.     00 automatic, 01 on, 10 off, 11 reserved
  8831. --------b-154601-----------------------------
  8832. INT 15 - Compaq SLT/286 - MODIFY POWER CONSERVATION/MODEM CONFIGURATION
  8833.     AX = 4601h
  8834.     BL = system inactivity timeout (1-21 minutes)
  8835.         FFh do not change
  8836.     CL = video display inactivity timeout (1-63 minutes)
  8837.         FFh do not change
  8838.     DL = current fixed disk drive inactivity timeout (1-21 minutes)
  8839.         FFh do not change
  8840.     DH = new modem state (00h turn off, 01h turn on, FFh don't change)
  8841. Return: CF clear if successful
  8842.         AH = 00h
  8843.         BL = current system inactivity timeout (1-21 minutes)
  8844.         CL = current video display inactivity timeout (1-63 minutes)
  8845.         DL = current fixed disk drive inactivity timeout (1-21 minutes)
  8846.         DH = modem state (FFh unchanged, 00h turned off, 01h turned on)
  8847.     CF set on error
  8848.         AH = error code
  8849.         01h input is out of range
  8850.         02h no modem present
  8851. SeeAlso: AX=4600h,INT 77
  8852. --------b-154604-----------------------------
  8853. INT 15 - Compaq Contura 486 and "Alladin" 08/05/93 ROMs - GET ???
  8854.     AX = 4604h
  8855. Return: CF clear if successful
  8856.         AL = byte read from I/O port 03F8h
  8857.     CF set on error (not supported)
  8858.         AH = 86h (unsupported function)
  8859. Note:    also supported by 7/26/93 LTE Lite 386 ROM
  8860. --------b-154605-----------------------------
  8861. INT 15 - Compaq Contura 486 and "Alladin" 08/05/93 ROMs - ???
  8862.     AX = 4605h
  8863. Return: CF clear if successful
  8864.     CF set on error (not supported)
  8865.         AH = 86h (unsupported function)
  8866. Note:    this function is a NOP (other than clearing CF) in the 08/05/93 version
  8867.       of the Contura 486/486c/486cx and "Aladdin" ROM, and the 7/26/93
  8868.       LTE Lite 386 ROM
  8869. --------S-1549-------------------------------
  8870. INT 15 U - HP 100LX/200LX - SERIAL INTERFACE SELECT
  8871.     AH = 49h
  8872.     AL = serial interface
  8873.         00h wired (COM1)
  8874.         01h infrared
  8875. Note:    interface should only be changed in deactivated state (see AH=4Ah)
  8876. SeeAlso: AH=4Ah"HP"
  8877. --------J-154900-----------------------------
  8878. INT 15 - Far East MS-DOS - GET BIOS TYPE
  8879.     AX = 4900h
  8880. Return: CF clear if successful
  8881.         AH = 00h
  8882.         BL = BIOS mode
  8883.         00h DOS/V
  8884.         01h standard DBCS DOS (hardware DBCS support)
  8885.     CF set on error
  8886.         AH = 86h (function not supported)
  8887. Note:    in practice, DOS/J returns AH=86h; AX DOS does not support this call
  8888. SeeAlso: AH=50h,INT 21/AH=30h
  8889. --------S-154A-------------------------------
  8890. INT 15 U - HP 100LX/200LX - SERIAL INTERFACE CONTROL
  8891.     AH = 4Ah
  8892.     AL = control
  8893.         00h deactivate
  8894.         01h activate
  8895. Note:    interface selected with AH=49h will be (de)activated
  8896. SeeAlso: AH=49h"HP"
  8897. --------b-154DD4-----------------------------
  8898. INT 15 - HP 95LX/100LX/200LX - INSTALLATION CHECK
  8899.     AX = 4DD4h
  8900. Return: BX = 4850h ("HP") if HP 95LX/100LX/200LX
  8901.         CX = model
  8902.         0101h HP 95LX
  8903.         0102h HP 100LX/200LX
  8904.         DH = ???
  8905.         02h HP 200LX 2MB BIOS 1.01 A D german
  8906.         DL = ???
  8907.         00h HP 95LX
  8908.         01h HP 200LX 2MB BIOS 1.01 A D german
  8909. SeeAlso: INT 0B"HP 95LX",INT 0F"HP 95LX",INT 5F/AH=00h,INT 60/DI=0100h
  8910. SeeAlso: INT 61"HP 95LX"
  8911. --------b-154E-------------------------------
  8912. INT 15 - HP 95LX - ENABLE/DISABLE LIGHT SLEEP
  8913.     AH = 4Eh
  8914.     AL = light sleep
  8915.         00h disabled
  8916.         01h enabled
  8917. Note:    when light sleep is disabled, the system will continue running at full
  8918.       speed; when enabled, it may automatically slow to conserve batteries
  8919. SeeAlso: INT 06"HP 95LX",INT 60/DI=0100h
  8920. --------B-154F-------------------------------
  8921. INT 15 C - KEYBOARD - KEYBOARD INTERCEPT (AT model 3x9,XT2,XT286,CONV,PS)
  8922.     AH = 4Fh
  8923.     AL = hardware scan code
  8924.     CF set
  8925. Return: CF set
  8926.        AL = hardware scan code
  8927.     CF clear
  8928.        scan code should be ignored
  8929. Note:    called by INT 09 handler to translate scan codes; the INT 09 code does
  8930.       not examine the scan code it reads from the keyboard until after
  8931.       this function returns.  This permits software to rearrange the
  8932.       keyboard; for example, swapping the CapsLock and Control keys, or
  8933.       turning the right Shift key into Enter.
  8934. SeeAlso: INT 09,INT 15/AH=C0h
  8935. --------J-1550-------------------------------
  8936. INT 15 - DOS/V - FONT SUBSYSTEM ACCESS
  8937.     AH = 50h
  8938.     AL = which function address to retrieve
  8939.         00h "read font" function
  8940.         01h "write font" function
  8941.     BL = 00h
  8942.     BH = character size (00h single-byte, 01h double-byte)
  8943.     DH = width of character cell
  8944.     DL = height of character cell
  8945.     BP = code page (see #0356)
  8946. Return: CF clear if successful
  8947.         AH = 00h
  8948.         ES:BX -> requested function's address
  8949.     CF set on error
  8950.         AH = error code (see #0357)
  8951. SeeAlso: AH=49h
  8952.  
  8953. (Table 0356)
  8954. Values for DOS/V code page:
  8955.  0    default
  8956.  437    US English
  8957.  932    Japanese
  8958.  934    Korea
  8959.  936    China
  8960.  938    Taiwan
  8961.  
  8962. (Table 0357)
  8963. Values for DOS/V error code:
  8964.  01h    invalid font type in BH
  8965.  02h    BL not zero
  8966.  03h    invalid font size
  8967.  04h    invalid code page
  8968.  80h    unsupported function (PC)
  8969.  86h    unsupported function (XT)
  8970. --------T-1550-------------------------------
  8971. INT 15 - VMIX v2.???+ - "sys_vm_page" - SET NEW VIRTUAL PAGE TABLE
  8972.     AH = 50h
  8973.     BX = segment of page directory table
  8974.     CX = page number of page table
  8975. SeeAlso: AH=10h"VMiX",AH=51h"VMiX",AH=52h"VMiX"
  8976. --------T-1551-------------------------------
  8977. INT 15 - VMiX v2.???+ - "sys_vm_func" - EXECUTE FUNCTION IN PROTECTED MODE
  8978.     AH = 51h
  8979.     STACK:    DWORD    selector:offset of function
  8980. Return: registers as returned by function
  8981. Note:    executes function with privilege level 0 (highest privilege)
  8982. SeeAlso: AH=10h"VMiX",AH=52h"VMiX"
  8983. --------B-155101-----------------------------
  8984. INT 15 - SYSTEM - later PS/2s - EXPANSION UNIT, RETURN CONFIGURATION NUMBER
  8985.     AX = 5101h
  8986. Return: CF set if successful
  8987.         AH = 00h
  8988.         AL = current configuration number
  8989.         00h system unit only
  8990.         FFh configuration not recognized
  8991.         BX = status flag
  8992.         bits 0-14: reserved
  8993.         bit 15: additional data is available (location TBD)
  8994.     CF clear on error
  8995.         AH = status
  8996.         01h expansion unit is not present
  8997.         86h function not supported
  8998. Note:    CF convention is the reverse of the standard convention for this
  8999.       interrupt.  (Perhaps a typo in the IBM BIOS Tech Ref?)
  9000. --------T-1552-------------------------------
  9001. INT 15 - VMiX v2.???+ - "sys_vm_init" - INITIALIZE PROTECTED-MODE ENVIRONMENT
  9002.     AH = 52h
  9003. SeeAlso: AH=50h"VMiX",AH=51h"VMiX"
  9004. ----------1552-------------------------------
  9005. INT 15 C - IBM/MS INT 13 Extensions - MEDIA EJECT INTERCEPT
  9006.     AH = 52h
  9007.     DL = drive number
  9008. Return: CF clear if OK to eject media
  9009.         AH = 00h
  9010.     CF set if ejection disallowed
  9011.         AH = error code (B1h,B3h) (see #0140)
  9012. Note:    called by the IBM/MS INT 13 Extensions driver/BIOS when an ejection
  9013.       request is made
  9014. SeeAlso: INT 13/AH=46h"INT 13 Extensions"
  9015. --------p-155300-----------------------------
  9016. INT 15 - Advanced Power Management Specification - INSTALLATION CHECK
  9017.     AX = 5300h
  9018.     BX = device ID of system BIOS (0000h)
  9019. Return: CF clear if successful
  9020.         AH = major version (BCD)
  9021.         AL = minor version (BCD)
  9022.         BX = 504Dh ("PM")
  9023.         CX = flags (see #0358)
  9024.     CF set on error
  9025.         AH = error code (06h,86h) (see #0359)
  9026.  
  9027. Bitfields for APM flags:
  9028. Bit(s)    Description    (Table 0358)
  9029.  0    16-bit protected mode interface supported
  9030.  1    32-bit protected mode interface supported
  9031.  2    CPU idle call reduces processor speed
  9032.  3    BIOS power management disabled
  9033.  4    BIOS power management disengaged (APM v1.1)
  9034.  5-7    reserved
  9035.  
  9036. (Table 0359)
  9037. Values for APM error code:
  9038.  01h    power management functionality disabled
  9039.  02h    interface connection already in effect
  9040.  03h    interface not connected
  9041.  04h    real-mode interface not connected
  9042.  05h    16-bit protected-mode interface already connected
  9043.  06h    16-bit protected-mode interface not supported
  9044.  07h    32-bit protected-mode interface already connected
  9045.  08h    32-bit protected-mode interface not supported
  9046.  09h    unrecognized device ID
  9047.  0Ah    invalid parameter value in CX
  9048.  0Bh-1Fh reserved for other interface and general errors
  9049.  20h-3Fh reserved for CPU errors
  9050.  40h-5Fh reserved for device errors
  9051.  60h    can't enter requested state
  9052.  61h-7Fh reserved for other system errors
  9053.  80h    no power management events pending
  9054.  81h-85h reserved for other power management event errors
  9055.  86h    APM not present
  9056.  87h-9Fh reserved for other power management event errors
  9057. --------p-155301-----------------------------
  9058. INT 15 - Advanced Power Management Specification - CONNECT REAL-MODE INTERFACE
  9059.     AX = 5301h
  9060.     BX = device ID of system BIOS (0000h)
  9061. Return: CF clear if successful
  9062.     CF set on error
  9063.         AH = error code (02h,05h,07h,09h) (see #0359)
  9064. SeeAlso: AX=5302h,AX=5303h,AX=5304h
  9065. --------p-155302-----------------------------
  9066. INT 15 R - Advanced Power Management Spec - CONNECT 16-BIT PROTMODE INTERFACE
  9067.     AX = 5302h
  9068.     BX = device ID of system BIOS (0000h)
  9069. Return: CF clear if successful
  9070.         AX = real-mode segment base address of protected-mode 16-bit code
  9071.         segment
  9072.         BX = offset of entry point
  9073.         CX = real-mode segment base address of protected-mode 16-bit data
  9074.         segment
  9075.         ---APM v1.1---
  9076.         SI = APM BIOS code segment length
  9077.         DI = APM BIOS data segment length
  9078.     CF set on error
  9079.         AH = error code (02h,05h,06h,07h,09h) (see #0359)
  9080. Notes:    the caller must initialize two consecutive descriptors with the
  9081.       returned segment base addresses; these descriptors must be valid
  9082.       whenever the protected-mode interface is called, and will have
  9083.       their limits arbitrarily set to 64K.
  9084.     the protected mode interface is invoked by making a far call with the
  9085.       same register values as for INT 15; it must be invoked while CPL=0,
  9086.       the code segment descriptor must have a DPL of 0, the stack must be
  9087.       in a 16-bit segment and have enough room for BIOS use and possible
  9088.       interrupts, and the current I/O permission bit map must allow access
  9089.       to the I/O ports used for power management.
  9090.     functions 00h-03h are not available from protected mode
  9091. SeeAlso: AX=5301h,AX=5303h,AX=5304h
  9092. --------p-155303-----------------------------
  9093. INT 15 - Advanced Power Management Spec - CONNECT 32-BIT PROTMODE INTERFACE
  9094.     AX = 5303h
  9095.     BX = device ID of system BIOS (0000h)
  9096. Return: CF clear if successful
  9097.         AX = real-mode segment base address of protected-mode 32-bit code
  9098.         segment
  9099.         EBX = offset of entry point
  9100.         CX = real-mode segment base address of protected-mode 16-bit code
  9101.         segment
  9102.         DX = real-mode segment base address of protected-mode 16-bit data
  9103.         segment
  9104.         ---APM v1.1---
  9105.         SI = APM BIOS code segment length
  9106.         DI = APM BIOS data segment length
  9107.     CF set on error
  9108.         AH = error code (02h,05h,07h,08h,09h) (see #0359)
  9109. Notes:    the caller must initialize three consecutive descriptors with the
  9110.       returned segment base addresses for 32-bit code, 16-bit code, and
  9111.       16-bit data, respectively; these descriptors must be valid whenever
  9112.       the protected-mode interface is called, and will have their limits
  9113.       arbitrarily set to 64K.
  9114.     the protected mode interface is invoked by making a far call to the
  9115.       32-bit code segment with the same register values as for INT 15; it
  9116.       must be invoked while CPL=0, the code segment descriptor must have a
  9117.       DPL of 0, the stack must be in a 32-bit segment and have enough room
  9118.       for BIOS use and possible interrupts, and the current I/O permission
  9119.       bit map must allow access to the I/O ports used for power management.
  9120.     functions 00h-03h are not available from protected mode
  9121. SeeAlso: AX=5301h,AX=5302h,AX=5304h
  9122. --------p-155304-----------------------------
  9123. INT 15 - Advanced Power Management Specification - DISCONNECT INTERFACE
  9124.     AX = 5304h
  9125.     BX = device ID of system BIOS (0000h)
  9126. Return: CF clear if successful
  9127.     CF set on error
  9128.         AH = error code (03h,09h) (see #0359)
  9129. SeeAlso: AX=5301h,AX=5302h,AX=5303h
  9130. --------p-155305-----------------------------
  9131. INT 15 - Advanced Power Management Specification - CPU IDLE
  9132.     AX = 5305h
  9133. Return: CF clear if successful (after system leaves idle state)
  9134.     CF set on error
  9135.         AH = error code (03h,0Bh) (see #0359)
  9136. Notes:    call when the system is idle and should be suspended until the next
  9137.       system event or interrupt
  9138.     should not be called from within a hardware interrupt handler to avoid
  9139.       reentrance problems
  9140.     if an interrupt causes the system to resume normal processing, the
  9141.       interrupt may or may not have been handled when the BIOS returns
  9142.       from this call; thus, the caller should allow interrupts on return
  9143.     interrupt handlers may not retain control if the BIOS allows
  9144.       interrupts while in idle mode even if they are able to determine
  9145.       that they were called from idle mode
  9146.     the caller should issue this call continuously in a loop until it needs
  9147.       to perform some processing of its own
  9148. SeeAlso: AX=1000h,AX=5306h,INT 2F/AX=1680h
  9149. --------p-155306-----------------------------
  9150. INT 15 - Advanced Power Management Specification - CPU BUSY
  9151.     AX = 5306h
  9152. Return: CF clear if successful
  9153.     CF set on error
  9154.         AH = error code (03h,0Bh) (see #0359)
  9155. Notes:    called to ensure that the system runs at full speed even on systems
  9156.       where the BIOS is unable to recognize increased activity (especially
  9157.       if interrupts are hooked by other programs and not chained to the
  9158.       BIOS)
  9159.     this call may be made even when the system is already running at full
  9160.       speed, but it will create unnecessary overhead
  9161.     should not be called from within a hardware interrupt handler to avoid
  9162.       reentrance problems
  9163. SeeAlso: AX=5305h
  9164. --------p-155307-----------------------------
  9165. INT 15 - Advanced Power Management Specification - SET POWER STATE
  9166.     AX = 5307h
  9167.     BX = device ID (see #0360)
  9168.     CX = system state ID (see #0361)
  9169. Return: CF clear if successful
  9170.     CF set on error
  9171.         AH = error code (01h,03h,09h,0Ah,0Bh,60h) (see #0359)
  9172. Note:    should not be called from within a hardware interrupt handler to avoid
  9173.       reentrance problems
  9174. SeeAlso: AX=530Ch
  9175.  
  9176. (Table 0360)
  9177. Values for APM device IDs:
  9178.  0000h    system BIOS
  9179.  0001h    all devices for which the system BIOS manages power
  9180.  01xxh    display (01FFh for all attached display devices)
  9181.  02xxh    secondary storage (02FFh for all attached secondary storage devices)
  9182.  03xxh    parallel ports (03FFh for all attached parallel ports)
  9183.  04xxh    serial ports (04FFh for all attached serial ports)
  9184. ---APM v1.1---
  9185.  05xxh    network adapters (05FFh for all attached network adapters)
  9186.  06xxh    PCMCIA sockets (06FFh for all)
  9187.  0700h-DFFFh reserved
  9188.  Exxxh    OEM-defined power device IDs
  9189.  F000h-FFFFh reserved
  9190.  
  9191. (Table 0361)
  9192. Values for system state ID:
  9193.  0000h    ready (not supported for device ID 0001h)
  9194.  0001h    stand-by
  9195.  0002h    suspend
  9196.  0003h    off (not supported for device ID 0001h)
  9197. ---APM v1.1---
  9198.  0004h    last request processing notification (only for device ID 0001h)
  9199.  0005h    last request rejected (only for device ID 0001h)
  9200.  0006h-001Fh reserved system states
  9201.  0020h-003Fh OEM-defined system states
  9202.  0040h-007Fh OEM-defined device states
  9203.  0080h-FFFFh reserved device states
  9204. --------p-155307CX0001-----------------------
  9205. INT 15 - Advanced Power Management Specification - SYSTEM STAND-BY
  9206.     AX = 5307h
  9207.     CX = 0001h
  9208.     BX = 0001h (device ID for all power-managed devices)
  9209. Return: CF clear
  9210. Notes:    puts the entire system into stand-by mode; normally called in response
  9211.       to a System Stand-by Request notification after any necessary
  9212.       processing, but may also be invoked at the caller's discretion
  9213.     should not be called from within a hardware interrupt handler to avoid
  9214.       reentrance problems
  9215.     the stand-by state is typically exited on an interrupt
  9216. SeeAlso: AX=4280h,AX=5307h/CX=0002h/BX=0001h,AX=530Bh
  9217. --------p-155307CX0002-----------------------
  9218. INT 15 - Advanced Power Management Specification - SUSPEND SYSTEM
  9219.     AX = 5307h
  9220.     CX = 0002h
  9221.     BX = 0001h (device ID for all power-managed devices)
  9222. Return: after system is resumed
  9223.     CF clear
  9224. Notes:    puts the entire system into a low-power suspended state; normally
  9225.       called in response to a Suspend System Request notification after
  9226.       any necessary processing, but may also be invoked at the caller's
  9227.       discretion
  9228.     should not be called from within a hardware interrupt handler to avoid
  9229.       reentrance problems
  9230.     the caller may need to update its date and time values because the
  9231.       system could have been suspended for a long period of time
  9232. SeeAlso: AX=5307h/CX=0001h/BX=0001h,AX=530Bh
  9233. --------p-155308-----------------------------
  9234. INT 15 - Advanced Power Management Spec - ENABLE/DISABLE POWER MANAGEMENT
  9235.     AX = 5308h
  9236.     BX = device ID for all devices power-managed by APM
  9237.         0001h (APM v1.1)
  9238.         FFFFh (APM v1.0)
  9239.     CX = new state
  9240.         0000h disabled
  9241.         0001h enabled
  9242. Return: CF clear if successful
  9243.     CF set on error
  9244.         AH = error code (01h,03h,09h,0Ah,0Bh) (see #0359)
  9245. Notes:    when power management is disabled, the system BIOS will not
  9246.       automatically power down devices, enter stand-by or suspended mode,
  9247.       or perform any power-saving actions in response to AX=5305h calls
  9248.     should not be called from within a hardware interrupt handler to avoid
  9249.       reentrance problems
  9250. SeeAlso: AX=5309h,AX=530Dh,AX=530Fh
  9251. --------p-155309-----------------------------
  9252. INT 15 - Advanced Power Management Specification - RESTORE POWER-ON DEFAULTS
  9253.     AX = 5309h
  9254.     BX = device ID for all devices power-managed by APM
  9255.         0001h (APM v1.1)
  9256.         FFFFh (APM v1.0)
  9257. Return: CF clear if successful
  9258.     CF set on error
  9259.         AH = error code (09h) (see #0359)
  9260. Note:    should not be called from within a hardware interrupt handler to avoid
  9261.       reentrance problems
  9262. SeeAlso: AX=5308h
  9263. --------p-15530ABX0001-----------------------
  9264. INT 15 - Advanced Power Management Specification - GET POWER STATUS
  9265.     AX = 530Ah
  9266.     BX = 0001h (device ID for all devices power-managed by APM)
  9267. Return: CF clear if successful
  9268.         BH = AC line status
  9269.         00h off-line
  9270.         01h on-line
  9271.         02h on backup power (APM v1.1)
  9272.         FFh unknown
  9273.         other reserved
  9274.         BL = battery status (see #0362)
  9275.         CH = battery flag (APM v1.1) (see #0363)
  9276.         CL = remaining battery life, percentage
  9277.         00h-64h (0-100) percentage of full charge
  9278.         FFh unknown
  9279.         DX = remaining battery life, time (APM v1.1) (see #0364)
  9280.     CF set on error
  9281.         AH = error code (09h) (see #0359)
  9282. Note:    should not be called from within a hardware interrupt handler to avoid
  9283.       reentrance problems
  9284.  
  9285. (Table 0362)
  9286. Values for APM v1.0+ battery status:
  9287.  00h    high
  9288.  01h    low
  9289.  02h    critical
  9290.  03h    charging
  9291.  FFh    unknown
  9292.  other    reserved
  9293.  
  9294. Bitfields for APM v1.1 battery flag:
  9295. Bit(s)    Description    (Table 0363)
  9296.  0    high
  9297.  1    low
  9298.  2    critical
  9299.  3    charging
  9300.  4-6    reserved
  9301.  7    no system battery
  9302. Note:    all bits set (FFh) if unknown
  9303.  
  9304. Bitfields for APM v1.1 remaining battery life:
  9305. Bit(s)    Description    (Table 0364)
  9306.  15    time units: 0=seconds, 1=minutes
  9307.  14-0    battery life in minutes or seconds
  9308. Note:    all bits set (FFFFh) if unknown
  9309. --------p-15530B-----------------------------
  9310. INT 15 - Advanced Power Management Specification - GET POWER MANAGEMENT EVENT
  9311.     AX = 530Bh
  9312. Return: CF clear if successful
  9313.         BX = event code (see #0365)
  9314.     CF set on error
  9315.         AH = error code (03h,0Bh,80h) (see #0359)
  9316. Notes:    although power management events are often asynchronous, notification
  9317.       will not be made until polled via this call to permit software to
  9318.       only receive event notification when it is prepared to process
  9319.       power management events; since these events are not very time-
  9320.       critical, it should be sufficient to poll once or twice per second
  9321.     the critical resume notification is made after the system resumes
  9322.       from an emergency suspension; normally, the system BIOS only notifies
  9323.       its partner that it wishes to suspend and relies on the partner to
  9324.       actually request the suspension, but no notification is made on an
  9325.       emergency suspension
  9326.     should not be called from within a hardware interrupt handler to avoid
  9327.       reentrance problems
  9328. SeeAlso: AX=5307h,AX=5307h/BX=0001h/CX=0001h,AX=5307h/BX=0001h/CX=0002h
  9329.  
  9330. (Table 0365)
  9331. Values for APM event code:
  9332.  0001h    system stand-by request
  9333.  0002h    system suspend request
  9334.  0003h    normal resume system notification
  9335.  0004h    critical resume system notification
  9336.  0005h    battery low notification
  9337. ---APM v1.1---
  9338.  0006h    power status change notification
  9339.  0007h    update time notification
  9340.  0008h    critical system suspend notification
  9341.  0009h    user system standby request notification
  9342.  000Ah    user system suspend request notification
  9343.  000Bh    system standby resume notification
  9344.  000Ch-00FFh reserved system events
  9345.  01xxh    reserved device events
  9346.  02xxh    OEM-defined APM events
  9347.  0300h-FFFFh reserved
  9348. --------p-15530C-----------------------------
  9349. INT 15 - Advanced Power Management v1.1 - GET POWER STATE
  9350.     AX = 530Ch
  9351.     BX = device ID (see #0360)
  9352. Return: CF clear if successful
  9353.         BX = system state ID (see #0361)
  9354.     CF set on error
  9355.         AH = error code (01h,09h) (see #0359)
  9356. SeeAlso: AX=5307h
  9357. --------p-15530D-----------------------------
  9358. INT 15 - Advanced Power Management v1.1 - EN/DISABLE DEVICE POWER MANAGEMENT
  9359.     AX = 530Dh
  9360.     BX = device ID (see #0360)
  9361.     CX = function
  9362.         0000h disable power management
  9363.         0001h enable power management
  9364. Return: CF clear if successful
  9365.     CF set on error
  9366.         AH = error code (01h,03h,09h,0Ah,0Bh) (see #0359)
  9367. SeeAlso: AX=5308h,AX=530Fh
  9368. --------p-15530E-----------------------------
  9369. INT 15 - Advanced Power Management v1.1 - DRIVER VERSION
  9370.     AX = 530Eh
  9371.     BX = device ID of system BIOS (0000h)
  9372.     CH = APM driver major version (BCD)
  9373.     CL = APM driver minor version (BCD)
  9374. Return: CF clear if successful
  9375.         AH = APM connection major version (BCD)
  9376.         AL = APM connection minor version (BCD)
  9377.     CF set on error
  9378.         AH = error code (03h,09h,0Bh) (see #0359)
  9379. SeeAlso: AX=5300h
  9380. --------p-15530F-----------------------------
  9381. INT 15 - Advanced Power Management v1.1 - ENGAGE/DISENGAGE POWER MANAGEMENT
  9382.     AX = 530Fh
  9383.     BX = device ID (see #0360)
  9384.     CX = function
  9385.         0000h disengage power management
  9386.         0001h engage power management
  9387. Return: CF clear if successful
  9388.     CF set on error
  9389.         AH = error code (01h,09h) (see #0359)
  9390. Note:    unlike AX=5308h, this call does not affect the functioning of the APM
  9391.       BIOS
  9392. SeeAlso: AX=5308h,AX=530Dh
  9393. --------p-155380BH00-------------------------
  9394. INT 15 - APM SL Enhanced v1.0 - GET SUSPEND/GLOBAL STANDBY MODE
  9395.     AX = 5380h
  9396.     BH = 00h
  9397. Return: CF clear if successful
  9398.         AL = 82360SL Auto Power Off Timer High Count (APWR_TMRH)
  9399.         BL = sustdbymode (see #0366)
  9400. SeeAlso: AX=5380h/BH=01h,AX=5380h/BH=02h,AX=5380h/BH=7Fh
  9401.  
  9402. Bitfields for APM SL sustdbymode:
  9403. Bit(s)    Description    (Table 0366)
  9404.  2    ???
  9405.  1    Auto Power Off Timer Enable (APWR_TMR_EN)
  9406.  0    ???
  9407. --------p-155380BH01-------------------------
  9408. INT 15 - APM SL Enhanced v1.0 - SET SUSPEND/GLOBAL STANDBY MODE
  9409.     AX = 5380h
  9410.     BH = 01h
  9411.     BL = sustdbymode (see #0366)
  9412. Return: CF clear if successful
  9413. SeeAlso: AX=5380h/BH=00h,AX=5380h/BH=7Fh
  9414. --------p-155380BH02-------------------------
  9415. INT 15 - APM SL Enhanced v1.0 - GET GLOBAL STANDBY TIMER
  9416.     AX = 5380h
  9417.     BH = 02h
  9418. Return: CF clear if successful
  9419.     SI:DI = timer count in seconds (actually 1.024 seconds)
  9420. Desc:    reads the value of 82360SL GSTDBY_TMRH & GSTDBY_TMRL registers
  9421. SeeAlso: AX=5380h/BH=00h,AX=5380h/BH=03h,AX=5380h/BH=04h,AX=5380h/BH=7Fh
  9422. --------p-155380BH03-------------------------
  9423. INT 15 - APM SL Enhanced v1.0 - SET GLOBAL STANDBY TIMER
  9424.     AX = 5380h
  9425.     BH = 03h
  9426.     SI:DI = timer count in seconds (actually 1.024 seconds)
  9427. Return: CF clear if successful
  9428. Desc:    sets the value of 82360SL GSTDBY_TMRH & GSTDBY_TMRL registers
  9429. Note:    the maximum timer count is 268431 seconds
  9430. SeeAlso: AX=5380h/BH=02h,AX=5380h/BH=7Fh
  9431. --------p-155380BH04-------------------------
  9432. INT 15 - APM SL Enhanced v1.0 - GET AUTO POWER OFF TIMER
  9433.     AX = 5380h
  9434.     BH = 04h
  9435. Return: CF clear if successful
  9436.     SI:DI = timer count in seconds (actually 1.024 seconds)
  9437. Desc:    reads the value of 82360SL APWR_TMRH & APWR_TMRL registers
  9438. SeeAlso: AX=5380h/BH=02h,AX=5380h/BH=05h,AX=5380h/BH=06h,AX=5380h/BH=7Fh
  9439. --------p-155380BH05-------------------------
  9440. INT 15 - APM SL Enhanced v1.0 - SET AUTO POWER OFF TIMER
  9441.     AX = 5380h
  9442.     BH = 05h
  9443.     SI:DI = timer count in seconds (actually 1.024 seconds)
  9444. Return: CF clear if successful
  9445. Desc:    sets the value of 82360SL APWR_TMRH & APWR_TMRL registers
  9446. Note:    the maximum timer count is 134213 seconds
  9447. SeeAlso: AX=5380h/BH=04h,AX=5380h/BH=7Fh
  9448. --------p-155380BH06-------------------------
  9449. INT 15 - APM SL Enhanced v1.0 - GET RESUME CONDITION
  9450.     AX = 5380h
  9451.     BH = 06h
  9452. Return: CF clear if successful
  9453.         BL = resume condition (see #0367)
  9454. Desc:    reads the value of 82360SL RESUME_MASK register
  9455. SeeAlso: AX=5380h/BH=04h,AX=5380h/BH=07h,AX=5380h/BH=08h,AX=5380h/BH=7Fh
  9456.  
  9457. Bitfields for APM SL resume condition:
  9458. Bit(s)    Description    (Table 0367)
  9459.  7-2    reserved (0)
  9460.  1    alarm enabled (resume on CMOS alarm)
  9461.  0    ring enabled
  9462. --------p-155380BH07-------------------------
  9463. INT 15 - APM SL Enhanced v1.0 - SET RESUME CONDITION
  9464.     AX = 5380h
  9465.     BH = 07h
  9466.     BL = resume condition (see #0367)
  9467. Return: CF clear if successful
  9468. Desc:    sets the value of 82360SL RESUME_MASK register
  9469. SeeAlso: AX=5380h/BH=06h,AX=5380h/BH=7Fh
  9470. --------p-155380BH08-------------------------
  9471. INT 15 - APM SL Enhanced v1.0 - GET CALENDAR EVENT TIME
  9472.     AX = 5380h
  9473.     BH = 08h
  9474. Return: CF clear if successful
  9475.         CH = hours
  9476.         CL = minutes
  9477.         SI = seconds
  9478.     CF set on error
  9479.         AH = error code (see #0368)
  9480. Desc:    gets calendar event time from CMOS ram
  9481. SeeAlso: AX=5380h/BH=06h,AX=5380h/BH=09h,AX=5380h/BH=0Ah,AX=5380h/BH=7Fh
  9482.  
  9483. (Table 0368)
  9484. Values for APM SL error code:
  9485.  02h    no alarm set
  9486.  03h    no battery
  9487. --------p-155380BH09-------------------------
  9488. INT 15 - APM SL Enhanced v1.0 - SET CALENDAR EVENT TIME
  9489.     AX = 5380h
  9490.     BH = 09h
  9491.     CH = hours
  9492.     CL = minutes
  9493.     SI = seconds
  9494. Return: CF clear if successful
  9495.     CF set on error
  9496.         AH = error code (see #0368)
  9497. Desc:    sets calendar event time in CMOS ram, enables Alarm resume
  9498. SeeAlso: AX=5380h/BH=08h,AX=5380h/BH=7Fh
  9499. --------p-155380BH0A-------------------------
  9500. INT 15 - APM SL Enhanced v1.0 - GET CALENDAR EVENT DATE
  9501.     AX = 5380h
  9502.     BH = 0Ah
  9503. Return: CF clear if successful
  9504.         SI = century
  9505.         DI = year
  9506.         CH = month
  9507.         CL = day
  9508.     CF set on error
  9509.         AH = error code (see #0368)
  9510. Desc:    reads calendar event date from Extended CMOS ram
  9511. SeeAlso: AX=5380h/BH=08h,AX=5380h/BH=0Bh,AX=5380h/BH=0Ch,AX=5380h/BH=7Fh
  9512. --------p-155380BH0B-------------------------
  9513. INT 15 - APM SL Enhanced v1.0 - SET CALENDAR EVENT DATE
  9514.     AX = 5380h
  9515.     BH = 0Bh
  9516.     SI = century
  9517.     DI = year
  9518.     CH = month
  9519.     CL = day
  9520. Return: CF clear if successful
  9521.     CF set on error
  9522.         AH = error code (see #0368)
  9523. Desc:    sets calendar event date in Extended CMOS ram
  9524. SeeAlso: AX=5380h/BH=0Ah,AX=5380h/BH=7Fh
  9525. --------p-155380BH0C-------------------------
  9526. INT 15 - APM SL Enhanced v1.0 - GET CPU SPEED MODE
  9527.     AX = 5380h
  9528.     BH = 0Ch
  9529. Return: CF clear if successful
  9530.     CL = CPU clock divider (1,2,4 or 8)
  9531.     BL = autocpumode ???
  9532. Desc:    reads bits 4-5 of CPUPWRMODE register
  9533. SeeAlso: AX=5380h/BH=0Ah,AX=5380h/BH=0Dh,AX=5380h/BH=7Fh
  9534. --------p-155380BH0D-------------------------
  9535. INT 15 - APM SL Enhanced v1.0 - SET CPU SPEED MODE
  9536.     AX = 5380h
  9537.     BH = 0Dh
  9538.     CL = CPU clock divider (1,2,4 or 8)
  9539.     BL = autocpumode ???
  9540. Return: CF clear if successful
  9541. Desc:    writes bits 4-5 of CPUPWRMODE register
  9542. SeeAlso: AX=5380h/BH=0Ch,AX=5380h/BH=7Eh,AX=5380h/BH=7Fh
  9543. --------p-155380BH7E-------------------------
  9544. INT 15 - APM SL Enhanced v1.0 - SL HW PARAMETER
  9545.     AX = 5380h
  9546.     BH = 7Eh
  9547. Return:    AL = ???
  9548.         03h on A-Step 386SL BIOSes
  9549.         12h on later steps
  9550.     BX = Control port (00B0h)
  9551. SeeAlso: AX=5380h/BH=00h,AX=5380h/BH=7Fh
  9552. --------p-155380BH7F-------------------------
  9553. INT 15 - Advanced Power Management v1.1 - OEM APM INSTALLATION CHECK
  9554.     AX = 5380h
  9555.     BH = 7Fh
  9556. Return: CF clear if successful
  9557.         BX = OEM identifier
  9558.         all other registers OEM-defined
  9559.         ---Intel SL Enhanced Option BIOS---
  9560.         BX = 534Ch ('SL')
  9561.         CL = 4Fh ('O')
  9562.         AL = version (10h = 1.0)
  9563.         ---HP APM BIOS---
  9564.         BX = 4850h ('HP')
  9565.         CX = version (0001h)
  9566.     CF set on error
  9567.         AH = error code (03h) (see #0359)
  9568. SeeAlso: AX=5380h/BH=00h
  9569. --------p-155380-----------------------------
  9570. INT 15 - Advanced Power Management v1.1 - OEM APM FUNCTIONS
  9571.     AX = 5380h
  9572.     BH <> 7Fh
  9573.     all other registers OEM-defined
  9574. Return: OEM-defined
  9575. SeeAlso: AX=5380h/BH=7Fh
  9576. --------T-155400-----------------------------
  9577. INT 15 C - Omniview Multitasker - INSTALLATION NOTIFICATION
  9578.     AX = 5400h
  9579.     ES:BX -> device information tables
  9580.     DI:DX -> dispatcher entry point
  9581. Note:    called by OmniView to notify programs loaded before OmniView of state
  9582.       changes inside OmniView
  9583. SeeAlso: AX=5407h,INT 2F/AX=DE00h
  9584. --------T-155401-----------------------------
  9585. INT 15 C - Omniview Multitasker - PROCESS CREATION
  9586.     AX = 5401h
  9587.     ES:BX = process handle
  9588. Note:    called by OmniView to notify programs loaded before OmniView of state
  9589.       changes inside OmniView
  9590. SeeAlso: AX=5402h,INT 2F/AX=DE04h
  9591. --------T-155402-----------------------------
  9592. INT 15 C - Omniview Multitasker - PROCESS DESTRUCTION
  9593.     AX = 5402h
  9594.     ES:DX = process handle
  9595. Note:    called by OmniView to notify programs loaded before OmniView of state
  9596.       changes inside OmniView
  9597. SeeAlso: AX=5401h,INT 2F/AX=DE05h
  9598. --------T-155403-----------------------------
  9599. INT 15 C - Omniview Multitasker - SAVE
  9600.     AX = 5403h
  9601.     ES:DX = process swapping out
  9602. Note:    called by OmniView to notify programs loaded before OmniView of state
  9603.       changes inside OmniView
  9604. SeeAlso: AX=5404h,INT 2F/AX=DE08h
  9605. --------T-155404-----------------------------
  9606. INT 15 C - Omniview Multitasker - RESTORE
  9607.     AX = 5404h
  9608.     ES:DX = process swapping in
  9609. Note:    called by OmniView to notify programs loaded before OmniView of state
  9610.       changes inside OmniView
  9611. SeeAlso: AX=5403h,INT 2F/AX=DE09h
  9612. --------T-155405-----------------------------
  9613. INT 15 C - Omniview Multitasker - SWITCHING TO BACKGROUND
  9614.     AX = 5405h
  9615.     ES:DX = process swapping in
  9616. Note:    called by OmniView to notify programs loaded before OmniView of state
  9617.       changes inside OmniView
  9618. SeeAlso: AX=5406h
  9619. --------T-155406-----------------------------
  9620. INT 15 C - Omniview Multitasker - SWITCHING TO FOREGROUND
  9621.     AX = 5406h
  9622.     ES:DX = process swapping in
  9623. Note:    called by OmniView to notify programs loaded before OmniView of state
  9624.       changes inside OmniView
  9625. SeeAlso: AX=5405h
  9626. --------T-155407-----------------------------
  9627. INT 15 C - Omniview Multitasker - EXIT NOTIFICATION
  9628.     AX = 5407h
  9629. Note:    called by OmniView to notify programs loaded before OmniView of state
  9630.       changes inside OmniView
  9631. SeeAlso: AX=5400h,INT 2F/AX=DE03h
  9632. --------!---Section--------------------------
  9633.